在stm32中如何判断GPIO引脚工作模式是输入还是输出呢?
以(LED配置输出,key配置输入)为例子
首先是LED;你的目的是控制单片机驱动灯的状态,由硬件连接来说一般都是一个灯+限流电阻,然后通过GPIO管脚的输出高低来控制灯的状态。来看看M4的GPIO管脚内部结构,
只有配置输出才能控制I/O引脚的电平高低。才能控制电流流向。很明显输出做不得到。也就不能控制电流高低了。
对于KEY为什么选择输入。
一般KEY都是做为判断也就是if(key==?);出了REST;为什么用输入呢,因为当你想要知道你的按键按下没有,通过单片机读取输入数据寄存器IDR的数据;你就可以知道按键此时的状态了,为什么用中断呢,这就涉及到中断的优点了,完全不影响主函数进程,当时间发生才进入中断服务函数执行想要执行的代码,中断服务函数执行完毕之后再回到入口地址处继续执行,也就是大大节省了CPU占用率。
只是了解的话不需要看这些,记下来就行。你就是单片机,你要控制什么,单片机就控制什么;想要灯亮,我IO口输出一个低电平,二极管正向导通了就可以了。
我想要知道KEY的状态,我读取IO口的高低。看它输入是高是低,输入是高,不就证明他按下了吗。
对于输出模式:一般情况下输出情况用推挽
对于输入模式:检测高电平要配下拉电阻即(输入下拉)
检测低电平要配上拉电阻即(输入上拉)
当想接收到什么电平就是什么电平的时候用浮空输入,比如数据传输的时候,确保接收的数据正确性用浮空输入
微信扫码关注
更新实时通知