当前位置:   article > 正文

【FreeRTOS】Arduino开发STM32_stm32 arduino

stm32 arduino

0.开发环境(工具)

Vscode 、platformio、arduino、STM32F103C8T6、USB-TTL

引脚连接:STM32直接设置为烧录模式即可,烧录完成后会自动运行程序。

   

1.点灯加串口输出调试

注意事项:每次上传程序前,需要按一下复位键。

  1. #include <Arduino.h>
  2. #define ledPin PC13
  3. HardwareSerial Serial1(PA10, PA9); // 将串口1的管脚指定到PA10(RX),PA9(TX)引脚上
  4. int i = 0;
  5. void setup()
  6. {
  7. Serial1.begin(115200);
  8. pinMode(ledPin, OUTPUT);
  9. }
  10. void loop()
  11. {
  12. digitalWrite(ledPin, HIGH);
  13. delay(500);
  14. digitalWrite(ledPin, LOW);
  15. delay(500);
  16. Serial1.println(i++);
  17. }

platformio.ini文件配置

  1. [env:genericSTM32F103C8]
  2. platform = ststm32
  3. board = genericSTM32F103C8
  4. framework = arduino
  5. upload_port = COM17
  6. monitor_port = COM17
  7. monitor_speed = 115200
  8. upload_protocol = serial

2.FreeRTOS开发STM32

添加相关库函数

测试程序:板载LED闪烁,同时进行串口输出

  1. #include <Arduino.h>
  2. #include <STM32FreeRTOS.h>
  3. #define ledPin PC13
  4. HardwareSerial Serial1(PA10, PA9); // 将串口1的管脚指定到PA10(RX),PA9(TX)引脚上
  5. int i = 0;
  6. void test1(void *pt)
  7. {
  8. pinMode(ledPin, OUTPUT);
  9. while (1)
  10. {
  11. digitalWrite(ledPin, HIGH);
  12. vTaskDelay(100);
  13. digitalWrite(ledPin, LOW);
  14. vTaskDelay(100);
  15. Serial1.println(i++);
  16. }
  17. }
  18. void setup()
  19. {
  20. Serial1.begin(115200);
  21. xTaskCreate(test1, "", 1024, NULL, 1, NULL);
  22. vTaskStartScheduler(); // 开启任务调度,这条语句必须加,否则程序无法正常执行
  23. vTaskDelete(NULL);
  24. }
  25. void loop()
  26. {
  27. }

 vTaskStartScheduler()的作用

vTaskStartScheduler()是FreeRTOS实时操作系统中的一个函数,它的作用是启动任务调度器在FreeRTOS中,任务调度器负责按照任务的优先级和调度策略来调度任务的执行

具体而言,vTaskStartScheduler()函数会初始化FreeRTOS的内部数据结构,并开始任务调度器的运行。一旦调用了该函数,任务调度器会按照任务的优先级和调度策略开始调度任务的执行。它会根据每个任务的优先级,以抢占或协作的方式分配处理器时间片给不同的任务,从而实现任务的并发执行。

vTaskStartScheduler()函数通常是在系统初始化过程的最后被调用,它标志着系统进入多任务运行状态。在调用该函数之前,需要先创建并初始化好各个任务,并设置好任务的优先级。

需要注意的是,vTaskStartScheduler()函数是一个永不返回的函数,一旦任务调度器开始运行,它将控制整个系统的执行,直到发生严重错误或调用了特殊的函数来停止任务调度器的运行。

总结起来,vTaskStartScheduler()函数的作用是启动FreeRTOS任务调度器,让各个任务按照优先级和调度策略并发执行

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号