重庆快速网站推广,建设网站公司排名,wordpress访客明细,媒体公关公司使用STM32CubeIDE生成。 1#xff0c;使能FreeRTOS 2#xff0c;选择版本 CMSIS_V1 3 设置参数USE_NEWLIB_REENTRANT 如果不设置#xff0c;会在生成代码的时候提示错误 4#xff0c;设置时钟TIM1作为系统时钟
5#xff0c;设置Task
…使用STM32CubeIDE生成。 1使能FreeRTOS 2选择版本 CMSIS_V1 3 设置参数USE_NEWLIB_REENTRANT 如果不设置会在生成代码的时候提示错误 4设置时钟TIM1作为系统时钟
5设置Task
点击Add按钮会出现对话框设置好后就会有一个任务可以使用默认的任务可以改设置。这里兴建了两个任务
led_wok_task系统启动后LED会点亮如果接收到消息会闪烁
led_fault_task系统启动后LED会熄灭如果接收到消息会闪烁 注意到生成的代码main.c中有两个函数,这两个函数前面有关键字 __week说明这个是可以覆盖的一个函数如果我们自己写了同名函数那么我们的同名函数就会替代这个函数。 6设置LL库 新建usr_led.c
编写如下代码这个代码里面创建了两个队列led_work_queue和led_fault_queue通过调用NotifyLedWorkBlink函数和NotifyLedFaultBlink函数往这两个队列里面写数据LedWorkTask和LedFaultTask做了两件事情第一件事情就是初始化队列led_work_queue和led_fault_queue设置初始状态在while循环中时刻监视队列里面有没有数据如果有就让led闪烁。
#include main.h
#include cmsis_os.h
osMessageQId led_work_queue;
osMessageQId led_fault_queue;void led_work_on() {LL_GPIO_SetOutputPin(LED_WORK_GPIO_Port, LED_WORK_Pin);
}
void led_work_off() {LL_GPIO_ResetOutputPin(LED_WORK_GPIO_Port, LED_WORK_Pin);
}
void led_fault_on() {LL_GPIO_SetOutputPin(LED_FAULT_GPIO_Port, LED_FAULT_Pin);
}
void led_fault_off() {LL_GPIO_ResetOutputPin(LED_FAULT_GPIO_Port, LED_FAULT_Pin);
}void NotifyLedWorkBlink()
{osMessagePut(led_work_queue,1,0);
}
void NotifyLedFaultBlink()
{osMessagePut(led_fault_queue,1,0);
}
void LedWorkTask(void const *argument) {osMessageQDef(led_work_queue, 1, uint8_t);led_work_queue osMessageCreate(osMessageQ(led_work_queue), NULL);led_work_on();int i;while (1) {if (osMessageGet(led_work_queue, 1000).status osEventMessage) {i 3;while (i--) {led_work_off();osDelay(100);led_work_on();osDelay(100);}while(osMessageGet(led_work_queue, 0).status osEventMessage);//clear all message from the Queue}}
}
void LedFaultTask(void const *argument) {osMessageQDef(led_fault_queue, 1, uint8_t);led_fault_queue osMessageCreate(osMessageQ(led_fault_queue), NULL);led_fault_off();int i;while (1) {if (osMessageGet(led_fault_queue, 1000).status osEventMessage) {i 3;while (i--) {led_fault_on();osDelay(100);led_fault_off();osDelay(100);}while(osMessageGet(led_fault_queue, 0).status osEventMessage);}}
}