STM32CubeMX+freeRTOS+事件组 多任务处理LED和串口打印

摘要:利用CubeMx配置freeeRTOS建立任务并使用事件组实现按键按下时 LED开关和打印信息到串口,上位机接收显示。

验证STM32CubeMx配置的FreeRTOS的任务和事件组使用
方案:按下Key1,绿灯亮或者灭,同时串口打印Key1被按下了到上位机;相关端口和串口配置省略。
新建三个任务:
1》    按键扫描 KeyScan;
2》    灯开关 LEDToggle;
3》    串口打印 PrintTask
 


添加事件组:
 


然后代码生成即可。
代码生成后,任务和事件组的定义均生成在freeRTOS.c的代码中,串口代码在Usart.c,按键和LED灯的配置在GPIO.c中。
根据要实现的功能补充相关代码:LED灯的toggle, 串口使用Printf输出,此类代码可以从开发板自带的实验代码中获取,在此不做陈述。
关键代码如下:
1.    按键扫描任务的代码:
 


本想将该函数(KeyScanFunction)不放置在freeRTOS.c中,但是要使用事件组的句柄(UserEventHandle),该句柄在定义文件中,好像没有办法extern出去。
2.    LED开关任务代码:
 


当keyScanFunction检测到Key1按下后,设置时间KEY1,LedToggleFunction等待有效,突破阻塞,往下执行LED1_TOGGLE,实现LED开关
3.    打印任务代码:
 


当keyScanFunction检测到Key1按下后,设置时间KEY1,PrintTaskFunction等待有效,突破阻塞,往下执行Printf(),上位机收到打印的字符。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值