打印
[其它应用]

RT-Thread操作系统的PIN设备读写步骤

[复制链接]
756|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2023-9-1 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、代码
下面代码是宏定义引脚,然后操作引脚输出高低电平,并读取引脚电平;
(P.S.引脚是输出模式,也可以读取引脚电平的)
//宏定义LED的引脚编号PF9
#define LED0_PIN GET_PIN(F, 9)
int main(void)
{
//设置LED为推挽输出
rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);
while (1){    rt_pin_write(LED0_PIN, PIN_HIGH);                //设置高电平        rt_kprintf("led_status = %d\n",rt_pin_read(LED0_PIN));//读取电平    rt_thread_mdelay(500);    rt_pin_write(LED0_PIN, PIN_LOW);                //设置低电平        rt_kprintf("led_status = %d\n",rt_pin_read(LED0_PIN));//读取电平    rt_thread_mdelay(500);}
}
2、获取引脚编号 GET_PIN
2.1、GET_PIN的宏定义
#define GET_PIN(PORTx,PIN) (rt_base_t)((16 * ( ((rt_base_t)__STM32_PORT(PORTx) - (rt_base_t)GPIOA_BASE)/(0x0400UL) )) + PIN)
2.2、__STM32_PORT(port)的宏定义
##是字符串连接的意思,比如__STM32_PORT(F),也就是GPIO##F##_BASE,即 GPIOF_BASE
#define __STM32_PORT(port) GPIO##port##_BASE
2.3、下面是各个GPIO的地址,PF9带入GET_PIN的宏展开:
((16*(GPIOF_BASE-GPIOA_BASE)/1024)+9)
=((16*5)+9)
= 89
/*!< AHB1 peripherals */
#define GPIOA_BASE (AHB1PERIPH_BASE + 0x0000UL)
#define GPIOB_BASE (AHB1PERIPH_BASE + 0x0400UL)
#define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800UL)
#define GPIOD_BASE (AHB1PERIPH_BASE + 0x0C00UL)
#define GPIOE_BASE (AHB1PERIPH_BASE + 0x1000UL)
#define GPIOF_BASE (AHB1PERIPH_BASE + 0x1400UL)
#define GPIOG_BASE (AHB1PERIPH_BASE + 0x1800UL)
#define GPIOH_BASE (AHB1PERIPH_BASE + 0x1C00UL)
#define GPIOI_BASE (AHB1PERIPH_BASE + 0x2000UL)
对不对可以测试下,直接 #define LED0_PIN 89
还有一种获取引脚编号的方式rt_pin_get,在程序中打印rt_kprintf("PF9 = %d\n",rt_pin_get("PF.9")); ,
串口打印确实也是89;
3、配置引脚模式 rt_pin_mode
参数: pin:引脚编号
mode:
返回: 无
void rt_pin_mode(rt_base_t pin, rt_base_t mode);
4、写引脚电平 rt_pin_write
参数: pin:引脚编号
value:电平逻辑值,可取 2 种值之一,PIN_LOW 低电平,PIN_HIGH 高电平
返回: 无
void rt_pin_write(rt_base_t pin, rt_base_t value);
5、读引脚电平 rt_pin_read
参数: pin:引脚编号
返回: PIN_LOW 低电平;PIN_HIGH 高电平
int rt_pin_read(rt_base_t pin);


使用特权

评论回复
沙发
caigang13| | 2023-9-2 18:29 | 只看该作者
RTtread操作系统越来越完善了

使用特权

评论回复
板凳
juventus9554| | 2023-9-5 22:28 | 只看该作者
配置引脚模式一直打不开

使用特权

评论回复
地板
szt1993| | 2023-9-28 15:30 | 只看该作者
这些都是标准函数库嘛

使用特权

评论回复
5
t60yz| | 2023-9-29 01:11 | 只看该作者
非常详细的代码示例和解释!这对于使用RT-Thread操作系统的嵌入式开发者来说应该非常有帮助了。

使用特权

评论回复
6
t60yz| | 2023-9-29 01:12 | 只看该作者
操作引脚是嵌入式系统中的一个基本任务,您解释和示例代码清晰地展示了如何在RT-Thread中执行这些任务。对我了解有很大帮助,谢谢楼主

使用特权

评论回复
7
LOVEEVER| | 2023-10-21 17:07 | 只看该作者
RT-Thread中执行这些任务有错误是系统问题嘛

使用特权

评论回复
8
小小蚂蚁举千斤| | 2023-10-24 09:14 | 只看该作者
RT-Thread操作系统如何移植?

使用特权

评论回复
9
AdaMaYun| | 2023-10-28 20:27 | 只看该作者
RTtread操作系统肯定是越来越好!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1883

主题

6437

帖子

8

粉丝