GPIO输入学习
通过按键来控制LED灯亮灭
也是和上次一样 先是对RCC时钟使能 然后GPIO初始化 将其模式设为Out_PP(推挽输出),引脚初始化为pin1和pin2 速率选50MHZ。
因为之后的代码中会经常用到相同的代码 所以我们不再像前面把驱动函数写在主函数中 将其新定义一个文件夹 把.c和.h文件都拎出来 模块化编程代码更加简洁 并且复用率更高
今天用到了一个新的函数 这个函数是用来读取输出寄存器某一个端口的输入值
GPIO_ReadOutputDataBit()
可以通过他的值 来判断输送到引脚的bit位 例如像下面一样,可以根据输出寄存器中的值 来设置处在pin1的LED灯亮灭
void LED1_Turn()
{
if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_1) == 0)
{
GPIO_SetBits(GPIOA, GPIO_Pin_1);
} else {
GPIO_ResetBits(GPIOA, GPIO_Pin_1);
}
}
GPIO_ReadInputDataBit()
这个函数可以获取到引脚输入到输入寄存器中的值
uint8_t Key_GetNum()
{
uint8_t KeyNum = 0;
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0) {
Delay_ms(20);
while (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0) {
Delay_ms(20);
KeyNum = 1;
}
}
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) == 0) {
Delay_ms(20);
while (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) == 0) {
Delay_ms(20);
KeyNum = 2;
}
}
return KeyNum;
}
通过学习这几个函数 实现了按键控制LED亮灭 光敏传感器控制蜂鸣器,当然你也可以用光敏传感器一起控制LED和蜂鸣器
总结
周末两天有点懈怠了 主要写的代码不好上传 所以只对相应的函数进行了总结 代码逻辑都是很简单的if else判断 通过获取到的输入寄存器和输出寄存器中的值 在相应的if语句里点亮LED,之后的学习也是会总结当天所学到的函数及其功能和使用方法
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » STM32学习历程(day4)
发表评论 取消回复