STM32 CubeMX
学习使用Freertos第四步
在 FreeRTOS 中,中断管理和软件定时:
- ·
taskENTER_CRITICAL()
·; 是一个函数在 FreeRTOS 中使用的,用于进入临界区(critical section)。在临界区内,中断会被禁用,这样可以确保在多任务环境下共享资源的安全性。你可以在需要保护共享资源的代码段中使用 -
· taskENTER_CRITICAL()
·; 来禁用中断,然后在临界区结束时使用 taskEXIT_CRITICAL();
来重新启用中断。这样可以防止多个任务同时访问共享资源而导致的竞态条件。
一、STM32 CubeMX设置
时钟配置
HAL时基选择TIM1(不要选择滴答定时器;滴答定时器留给OS系统做时基)
使用STM32 CubeMX 库,配置Freertos
选择CMISS_V1接口就可以满足Freertos接口;且代码量比CMISS_V2小(CMISS_V2支持更多的RTOS接口,所以代码量比CMISS_V1多)
使能定时器,计时0.1中断
使能宏定义
二、实验一,CPU使用率
设置时基
文章来源:https://www.toymoban.com/news/detail-660722.html
配置代码
__weak void configureTimerForRunTimeStats(void)
{
g_osRuntimeCounter=0;
}
__weak unsigned long getRunTimeCounterValue(void)
{
return g_osRuntimeCounter;
}
任务代码
void StartDefaultTask1(void const * argument)
{
/* USER CODE BEGIN StartDefaultTask1 */
/* Infinite loop */
for(;;)
{
printf("Task01 \r\n"); // printf输出字符串
osDelay(1000);
}
/* USER CODE END StartDefaultTask1 */
}
/* USER CODE BEGIN Header_StartTask02 */
/**
* @brief Function implementing the Task02 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask02 */
void StartTask02(void const * argument)
{
/* USER CODE BEGIN StartTask02 */
/* Infinite loop */
for(;;)
{
printf("Task02 \r\n"); // printf输出字符串
osDelay(1000);
}
/* USER CODE END StartTask02 */
}
/* USER CODE BEGIN Header_CpuStartTask03 */
/**
* @brief Function implementing the CpuTask03 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_CpuStartTask03 */
uint8_t CPU_RunInfo[400]; //保存任务运行时间信息
void CpuStartTask03(void const * argument)
{
/* Infinite loop */
for(;;)
{
printf(" B:阻塞 R:就绪 D:删除 S:暂停 X:运行 \r\n");
memset(CPU_RunInfo,0,400); //信息缓冲区清零
osThreadList(CPU_RunInfo); //获取任务运行时间信息
printf("---------------------------------------------\r\n");
printf("Task Task_Status Priority Remaining_Stack Task_No\r\n");
printf("%s", CPU_RunInfo);
printf("---------------------------------------------\r\n");
// memset(CPU_RunInfo,0,400); //信息缓冲区清零
//
// vTaskGetRunTimeStats((char *)&CPU_RunInfo);
//
// printf("Task Running_Count Utilization\r\n");
// printf("%s", CPU_RunInfo);
// printf("---------------------------------------------\r\n\n");
osDelay(1000);
}
}
实验现象
文章来源地址https://www.toymoban.com/news/detail-660722.html
到了这里,关于STM32 CubeMX (第四步Freertos内存管理和CPU使用率)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!