概念及其应用
FreeRTOS的事件标志组
概念简单理解就是一个事件标志可以控制多个任务,也可以多个事件标志采用与逻辑控制一个任务,多个事件标志用或逻辑控制一个任务
FreeRTOS事件标志组的介绍
1:FreeRTOS事件标志组是24比特内存空间
2、当任务去创建一个事件标志组的时候,可以和相关bit进行关联。
当等待事件标志组触发时,任务TASK2从运行态变为阻塞态。当任意一个中断或任务进行了一个SET把标志位从零值一之后,就可以让TASK2进行恢复。
工作原理:
事件标志组函数
实验操作:
功能需求
1、使用事件标志组检测多个按键输入(K3、K4、K5、K6)
2、当检测到任何一个按键按下,串口打印输出按键信息
3、当4路按键都已经按下,触发蜂鸣器报警
API
xEventGroupCreate()
xEventGroupSetBits()
xEventGroupSetBitsFromISR()
xEventGroupGetBits()
xEventGroupGetBitsFromISR()
xEventGroupWaitBits()
xEventGroupSync()
STM32CubeMX的配置
1、按键端口配置
查看原理图,配置按键IO口,
在STM32cubeMX中将PA0\PC13\PF11\PI9串口设置为gpio_exit模式,打开串口中断
2、蜂鸣器端口配置
查看原理图,配置蜂鸣器
将PF6配置为GPIO_OUTPUT模式
按键中断及事件标志组的创建
1、按键回调函数检测按键按下
①设置按键事件标志组句柄
EventGroupHandle_t KeyEventGroup;
②按键回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
//是不是KEY3
if(Key3_Pin == GPIO_Pin){