目录
- 基于stm32_h5的freertos编程示例
- 实验目的
- 添加FreeRTOS
- 配置FreeRTOS
- 测试工程
- 本文中使用的测试工程
基于stm32_h5的freertos编程示例
本文目标:基于stm32_h5的freertos编程示例
按照本文的描述,应该可以在对应的硬件上通实验并举一反三。
先决条件:拥有C语言基础,装有编译和集成的开发环境,比如:Keil uVision5
使用外设:USART1、GPIO、SysTick
HAL库版本:STM32H5xx HAL Driver version number 1.1.0
实验目的
记录项目学习,学习在项目中进行freertos编程,体验freertos。
添加FreeRTOS
打开我以前的现有工程,找到FreeRTOS的相关配置,如下:
下载一下对应的资源包,以方便有对应的源码,进行install一下。
需要耐心的等待资料下载完成,
同意安装:
安装完成之后进行配置:
配置FreeRTOS
使用 FreeRTOS 时,它的时钟基准来之 SysTick 定时器;HAL 库的时钟基准建议更好为其他定时器,如下修改(TIMER6、TIMER7 是功能最弱的基础定时器,可以选择它们):
测试工程
按照上述的配置进行底层配置之后,添加一些代码进行测试,在生成的工程中有一个默认任务,我用来点灯测试一下,
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN defaultTask */
/* Infinite loop */
for(;;)
{
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
vTaskDelay(100);
}
/* USER CODE END defaultTask */
}
然后再创建第 2 个任务,它在 LCD 上不断显示变化的字符。任务的入口函数如下:
static void SPILCDTaskFunction( void *pvParameters )
{
char buf[100];
int cnt = 0;
while (1)
{
sprintf(buf, "LCD Task Test : %d", cnt++);
Draw_String(0, 0, buf, 0x0000ff00, 0);
vTaskDelay(1000);
}
}
在“MX_FREERTOS_Init”函数中,创建第 2 个任务:
xTaskCreate(
SPILCDTaskFunction, // 函数指针, 任务函数
"spi_lcd_task", // 任务的名字
200, // 栈大小,单位为word,10表示40字节
NULL, // 调用任务函数时传入的参数
osPriorityNormal, // 优先级
NULL); // 任务句柄, 以后使用它来操作这个任务
编译、烧写、运行,可以看到开发板的 LED 不断闪烁,LCD 上不断显示变化的数值。
工程实验成功,后续将会继续记录项目中的实验,感谢关注。
本文中使用的测试工程
https://download.csdn.net/download/weixin_44317448/89150153?spm=1001.2014.3001.5503