1.在cube中配置时钟
此处说明一下,因为FreeRTOS会占用系统时钟,所以我们需要重新选一个时钟源,而笔者用的是STM32F407,tim6是基础时钟,优点是节省资源且配置简单。小伙伴们在这可自行定义其他的定时器。
2.时钟树的配置
注意一下红色框中的选项,其他的就没什么了。
3.FreeRTOS配置
勾选FreeRTOS,进行任务点灯任务创建。然后根据原理图对控制LED灯引脚进行初始化,此处省略。
4.生成代码
已经有很多大神在此处为大家讲解了,小的就在此处省略了。
5.keil设置
6.代码修改
可在main.c最开始的地方对灯进行一个初始化状态。
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);//初始化灯状态
1
然后找到MX_FREERTOS_Init()函数,我们进入这个函数,找到刚才我们创建的void vLEDTask(void *argument) 点灯任务函数,在这个函数中,我们对灯进行反转操作。
freertos.c
void vLEDTask(void *argument)
{
/* USER CODE BEGIN vLEDTask */
/* Infinite loop */
for(;;)
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
osDelay(500);
}
/* USER CODE END vLEDTask */
}
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/gu411/article/details/139657635
|