完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、具体实现过程:
1.CUBEMX配置 LED、 KEY、定时器:10ms(选用)、串口(调试打印) (对这部分配置不熟悉的,可以去看看基础配置,) 2.点击生成代码: 二、具体使用函数: 代码如下(示例): /* 每10ms进入一次该函数,检查一下引脚状态 可以用定时器,也可以用查询 */ void Key_scan(void) { //1 表示高电平,0表示低电平。低电平时按下 uint8_t val = HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin); static uint16_t count=0; if(!val)//按键按下 记录按下的时间 { count++; } else //按键松开 计数值清零并返回按下的时间值 { if(count>100)//按下经过1s 10*10ms=100ms { //长按 KEY_flag = 2; printf("key_flag == 2rn"); } else if(count>10 && count <100)//表示超过10ms { //短按 KEY_flag = 1; printf("key_flag == 1rn"); } else { //消抖时间 } count=0; } } /* *依据标志位改变LED的状态 */ void Led_scan() { switch(KEY_flag) { case 1: HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET); break; case 2: HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET); break; default: break; } } 三、主函数: /* *依据标志位改变LED的状态 */ HAL_Delay(3000); //防止一上电定时器,就开始计数 HAL_TIM_Base_Start_IT(&htim4); //定时器使能 printf("正常rn"); while (1) { /* USER CODE BEGIN 3 */ //1.查询方式扫描按键状态 // Key_scan(); // Led_scan(); // HAL_Delay(10); //2.定时器方式扫描按键状态 Led_scan(); } /* USER CODE END 3 */ 五、回调函数: void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { Key_scan(); HAL_TIM_Base_Start_IT(&htim4); //再次使能 } 六、串口重定向函数: 在uart.c中添加: /** * 函数功能: 重定向c库函数printf到DEBUG_USARTx * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */ int fputc(int ch, FILE *f) { HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); return ch; } 总结 现在看看其实代码也挺好理解,可为什么当时没写出来呢,害,还需继续努力。在嵌入式这条路上我还是个菜鸡,路漫漫其修远兮,在这里主要是把我学习遇到的坑分享一下! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 18:06 , Processed in 0.919825 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号