stm32l053 nucleo开发板按键检测(查询方式),使用cubemx生成代码1.板上自带一个按键接在PC13上,设置PC13为输入模式,选择PA5(板上LED)为输出模式
2.选择PC13为上拉输入,原理图上已经硬件上拉
配置完后直接生成代码,下面是关于GPIO配置的部分代码
自己添加检测函数,建议自己添加代码时在/* USER CODE BEGIN n */和/* USER CODE END n */之间添加,这样再次通过cubemx修改之后就不会删除自己书写的代码,否则修改cubemx工程文件重新生成代码会删除自己写的代码。
/* USER CODE BEGIN 2 */
void keyscan(void)
{
GPIO_PinState KEY;
KEY=HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13);
if(KEY==GPIO_PIN_RESET)
{
HAL_Delay(20);
KEY=HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13);
if(KEY!=GPIO_PIN_RESET)HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
}
}
/* USER CODE END 2 */
主程序while(1)中调用这个函数就够了,最后编译下载验证通过,cubemx详细配置请移步
https://bbs.eeworld.com.cn/thread-447853-1-1.html
另外stm32l053 nucleo开发板还支持mbed在线编译,里面自带了一些demo,有兴趣的可以去看一看,直接在线编译完了之后会生成一个xxx.bin文件,把这个文件直接拖进nucleo的64K的U盘里就能直接在版上运行,总的来说下载程序十分方便,但是唯一缺憾是不支持调试功能,自己下载了一个离线版的mbed叫做Smesh Stdio功能比在线版强但是支持四款单片机没有nucleo板,相信不久就能支持ST这套板子。
以下是mbed的按键检测程序非常简单有没有
#include "mbed.h"
DigitalIn mybutton(USER_BUTTON);
DigitalOut myled(LED1);
int main() {
while(1) {
if (mybutton == 0) { // Button is pressed
myled = !myled; // Toggle the LED state
wait(0.2); // 200 ms
}
}
}
把生成的.bin文件拖进对应盘就能运行了
另外发一份mbed的led闪烁程序
#include "mbed.h"
DigitalOut myled(LED1);
int main() {
while(1) {
myled = 1; // LED is ON
wait(0.2); // 200 ms
myled = 0; // LED is OFF
wait(1.0); // 1 sec
}
}