这样可以去直接移植其他rtos或者自己写的rtos了。 不过HAL_Delay函数最好不要用了。直接使用自己根据systick定义出的延时函数,HAL_GetTick 这歌函数里的计数器肯定是个常量了。 或者把HAL_Delay重新定义一个函数也可以,因为驱动函数库中是__weak void HAL_Delay(uint32_t Delay)有弱定义的。
这样可以去直接移植其他rtos或者自己写的rtos了。 不过HAL_Delay函数最好不要用了。直接使用自己根据systick定义出的延时函数,HAL_GetTick 这歌函数里的计数器肯定是个常量了。 或者把HAL_Delay重新定义一个函数也可以,因为驱动函数库中是__weak void HAL_Delay(uint32_t Delay)有弱定义的。
hal_delay有人用吗,管他啥项目直接上个freertos用软定时完了,反正freertos免费,cubemx还直接生成。 3月前·黑龙江 4 分享 回复 lczhuigz ... 中断里面怎么可以delay呢?[微笑] 3月前·湖北 4 分享 回复 展开3条回复 ୧⍤⃝🥕 ... 你把系统定时器优先级最高不就好了[看] ...
if(HAL_GPIO_ReadPin(SW1_GPIO_Port,SW1_Pin)==GPIO_PIN_RESET) { key=1; HAL_Delay(50); if(HAL_GPIO_ReadPin(SW1_GPIO_Port,SW1_Pin)==GPIO_PIN_RESET) returnkey; else return0; } if(HAL_GPIO_ReadPin(SW2_GPIO_Port,SW2_Pin)==GPIO_PIN_RESET) { key=2; HAL_Delay(50); if(HAL_GP...
FreeRTOS官网:http://www.freertos.org/ 代码托管网站:https://sourceforge.net/projects/freertos/files/FreeRTOS/ 二、新建工程 1. 打开 STM32CubeMX 软件,点击“新建工程” 2. 选择 MCU 和封装 3. 配置时钟 RCC 设置,选择 HSE(外部高速时钟) 为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器) ...
由于FreeRTOS和HAL库都默认使用Systick定时器作为时基源,而systick中断优先级一般设置为最低,导致在高优先中断函数里调用HAL_Delay()会卡死,因此要避免在中断里调用HAL_Delay()或者配置别的定时器作为HAL库的时基源。 8.FreeRTOS是怎么初始化systick的?
//这里为了兼容FreeRTOS,所以将SYSTICK的时钟频率改为AHB的频率! //SYSCLK:系统时钟频率 void delay_init(u8 SYSCLK) { u32 reload; HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);//SysTick频率为HCLK fac_us=SYSCLK; //不论是否使用OS,fac_us都需要使用 ...
Hal_Delay()前面有weak修饰,可以另写一个函数自动替换。里面获取时间的计数器改成读FreeRTOS的。
FreeRTOS 从入门到精通1--实时操作系统的前世今生 FreeRTOS 从入门到精通2--人生若只如初见,初识STM32CubeIDE FreeRTOS 从入门到精通3--千呼万唤始出来,你好世界 FreeRTOS 从入门到精通4--堆栈管理知多少 FreeRTOS 从入门到精通5--任务管理这件事(上) ...
基于STM32F407的FreeRTOS学习笔记(3) 上一期学习了任务的创建和删除,这一期学习任务的挂起与恢复。 所谓的挂起,也可以认为是 暂停 ,将运行中的任务挂起后,任务将暂停运行,直至系统恢复任务的运行。 在FreeRTOS的API文档中找到任务挂起函数的介绍,函数需要的参数为我们想要挂起的任务句柄,如果传递为NULL则暂停我们的...