IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> RT_Thread_PIN读写 -> 正文阅读

[嵌入式]RT_Thread_PIN读写

官方资料:PIN设备 (rt-thread.org)

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:

PIN_MODE_OUTPUT推挽输出
PIN_MODE_INPUT浮空输入
PIN_MODE_INPUT_PULLUP上拉输入
PIN_MODE_INPUT_PULLDOWN下拉输入
PIN_MODE_OUTPUT_OD开漏输出

返回:?????无

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);

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 00:28:41  更:2022-04-14 00:53:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:46:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码