当前位置:   article > 正文

STM32的FreeRtos的学习

STM32的FreeRtos的学习

首先就是去官网下载一个源文件:FreeRtos官网

下载下来的是一个zip文件,解压缩了。

然后再工程文件夹中创建个文件夹:

在这个文件夹中创建3个文件夹:

然后开始把下载下来的文件夹中的文件挑选出来放到我们的工程文件夹中:

至此所需要的文件就全部拷贝齐全了,接下来就是在工程中添加各个文件了。

最后三个文件夹的文件在工程中的分布如图:

接下来就是主程序了,其实过程就是:

1:声明一个任务句柄。

2:创建一个任务函数。

3:创建一个任务。

4:开启调度器。

  1. #include "stm32f10x.h" // Device header
  2. #include "freertos.h" //包含freeRtos头文件
  3. #include "task.h" //包含task头文件
  4. TaskHandle_t myTaskHandler; //声明一个任务句柄
  5. void myTask( void * arg) //创建一个任务函数
  6. {
  7. while(1) //任务函数就是一个死循环
  8. {
  9. GPIO_ResetBits(GPIOC, GPIO_Pin_13); //GPIO13口置0
  10. vTaskDelay(500); //延时500
  11. GPIO_SetBits(GPIOC, GPIO_Pin_13); //GPIO13口置1
  12. vTaskDelay(500); //延时500
  13. }
  14. }
  15. int main(void)
  16. {
  17. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  18. GPIO_InitTypeDef GPIO_InitStruct;
  19. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  20. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
  21. GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  22. GPIO_Init(GPIOC, &GPIO_InitStruct);
  23. GPIO_ResetBits(GPIOC, GPIO_Pin_13);
  24. /*创建一个任务(第一个参数是任务函数名称,
  25. 第二个参数是一个字符串,随便写
  26. 第三个参数是任务堆栈大小,我定的是512
  27. 第四个参数是任务传递参数,这里暂时不用写NULL
  28. 第五个参数是任务优先级,可以随意设置,我设置的是2
  29. 第六个参数是任务句柄)*/
  30. xTaskCreate(myTask, "myTask", 512, NULL, 2, &myTaskHandler);
  31. vTaskStartScheduler(); //开启调度器
  32. while(1)
  33. {
  34. }
  35. }

还需要在FreeRTOSConfig.h中添加几行宏定义:

#define xPortPendSVHandler                PendSV_Handler
#define vPortSVCHandler                   SVC_Handler
#define xPortSysTickHandler               SysTick_Handler

还要在stm32f10x_it.c文件中把刚刚宏定义的三个函数注释掉:107行    126行     135行

至此编译主函数下载到单片机中就能看到PC13的小灯在闪烁了。其他的地方我也不懂呢?今天第一天开始学习。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/710878
推荐阅读
相关标签
  

闽ICP备14008679号