RT-Thread PIN设备学习笔记
之前,我们学习了RTT的UART设备的用法。
我不得不说这真的很棒。
少于100条线会杀死任何MCU最原始的串行编程模式。
我不得不感叹RTT如此强大。
链接到文章:RT-Thread UART设备驱动程序框架初体验(中断模式接收带) 数据)让我们今天简单一些! RT-Thread PIN设备!要学习新事物,我个人提倡有需要的学习,而不是漫无目的的学习。
它是需求驱动的,并且是可以通过艰苦努力实现的结果,那么这并不容易!接下来,我们将基于熊派开发平台进行练习。
1.实际要求1.1硬件配置LED,两个按钮1.2软件要求按下按钮1时,LED点亮;按下按钮2时,LED熄灭。
这项要求很简单,入门级别,通过这种情况,让我们重新认识到RTT开发的便利!别胡说八道,就下去吧!我们将在RT-Thread Studio上构建。
2.开始练习2.1。
RT-Thread Studio项目的创建和基本配置(1)创建RT-Thread项目(2)配置项目配置。
请注意,您需要添加项目名称和项目位置。
在这里,我使用自定义路径而不是默认默认位置。
RT-Thread选择v4.0.2,此版本包含基本组件,而选择nano则没有。
目前,制造商仅支持ST,我相信他们将来会提供更多支持。
根据芯片,您可以选择更多支持RTT的STM32芯片。
由于我使用的是Bear Pie,因此我需要基于STM32L4系列。
该芯片是STM32L431RCTx。
对于控制台串行端口,小熊饼使用UART1分别发送和接收PA9和PA10。
这是非常用户友好的,并且可以在配置期间预设调试串行端口。
调试器选择要下载的ST-Link,SWD方法。
2.2。
代码编写项目配置完成后,默认情况下会生成用于实现LED翻转的例程。
实际上,此基本例程使用PIN设备。
我们只需根据要求对其进行修改,然后再进行分析。
2.2.1打开原理图,找到LED和按钮的引脚。
2.2.2根据要求编写代码。
在编写代码之前,有必要了解PIN设备在所需范围内的使用过程:首先,获取PIN码。
GET_PIN(port,pin)端口:例如,如果要获取GPIOA的第5个引脚,则:port = Apin = 5代码如下:GET_PIN(A,5)通常我们直接使用宏:#define LED_PIN GET_PIN(A,5)其次,设置引脚模式void rt_pin_mode(rt_base_t引脚,rt_base_t模式);参数说明引脚引脚号模式引脚工作模式引脚号通过GET_PIN获取,工作模式在RTT的pin.h中定义,根据需要选择:#define PIN_MODE_OUTPUT 0x00 / * output * /#define PIN_MODE_INPUT 0x01 / *输入* /#定义PIN_MODE_INPUT_PULLUP 0x02 / *上拉输入* /#define PIN_MODE_INPUT_PULLDOWN_OD 0x03 /#OUTPUT下拉输入* 0x04 / *开漏输出* /第三,设置或读取引脚电平,将引脚电平设置为空rt_pin_write(rt_base_t引脚,rt_base_t值);读取引脚级别int rt_pin_read(rt_base_t引脚);设置引脚电平避免rt_pin_write(rt_base_t引脚,rt_base_t值);参数说明引脚的引脚编号值级别逻辑值,可以采用2种宏定义值之一:PIN_LOW低电平,PIN_HIGH高层读取引脚电平rt_pin_read(rt_base_t引脚); rt_base_t引脚无效; rt_base_t引脚无效; rt_base_t引脚无效; rt_base_t引脚无效。
参数说明引脚引脚号返回值-PIN_LOW低电平PIN_HIGH高电平了解基本用法之后,我们可以根据需求开始编写应用程序。
根据要求编写应用程序/ * *版权所有(c)2006-2019,RT-Thread开发团队* * SPDX-许可证标识符:Apache-2.0 * *更改日志:*日期作者说明* 2019-09-09 RT-Thread第一版本* /#include& lt; rtthread.h& gt; #include& lt; board.h& gt; #include& ltdevice.h& gt; #define DBG_TAG“ main” #define DBG_LVL DBG_LOG#include& lt; rtdbg.h& gt;#定义LED0_PIN GET_PIN(C,13)#定义KEY0_PIN GET_PIN(B,2)#定义KEY1_PIN GET_PIN(B,3)int main(void){/ *配置LED引脚作为输出* / rt_pin_mode(LED0_PIN,PIN_MODE_OUTPUT); / *配置按钮0为上拉输入* / rt_pin_mode(KEY0_PIN,PIN_MODE_INPUT_PULLUP); / *将按钮1配置为上拉输入* / rt_pin_mode(KEY1_PIN,PIN_MODE_INPUT_PULLUP); / *将LED引脚默认配置为输出低电平* / rt_pin_write(LED0_PIN,0);而(1){/ *读取KEY0按钮,如果它为低,则打开LED灯* /如果(rt_pin_read(KEY0_PIN)== PIN_LOW){rt_pin_write(LED0_PIN,PIN_HIGH);} / *读取KEY1按下键,如果为低,则关闭LED灯* /如果(rt_pin_read(KEY1_PIN)== PIN_LOW){rt_pin_write(LED0_PIN,PIN_LOW);}}返回RT_EOK;} 2.2.3编译程序2.2.4&nbsp ;将程序下载到