1、首先准备好空白工程:
位于文件夹正点原子-探索者F4 资料盘(A盘)\4,程序源码\2,标准例程-库函数版本\实验0 Template工程模板 (下载地址:stm32f407探索者开发板-正点原子资料),然后准备好TencentOS tiny的源码,位于TencentOS tiny。
2、打开工程,将源码的arch、kernel、cmsis和tos_config的.c文件和.h文件移植到工程中,具体步骤参考TencentOS-tiny 移植到STM32F407(MDK)中的步骤,如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/eff41b35d5004579bfc56ca26fda138b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMjU5NDI5,size_16,color_FFFFFF,t_70) 里面的(6. 修改usart.c代码:6.1 printf函数重定向)我并没有修改,因为探索者的空白工程(基于标准库)已经有了usart.c和.h,已经将printf重定向到串口1了。
3、以上过程完毕后,就可以修改main函数了,采用
#include "stm32f4xx.h"
#include "usart.h"
#include "tos_k.h"
k_task_t task1;
k_task_t task2;
k_stack_t task_stack1[1024];
k_stack_t task_stack2[1024];
void test_task1(void *Parameter)
{
while(1)
{
printf("task1 running\r\n");
tos_task_delay(200);
}
}
void test_task2(void *Parameter)
{
k_err_t err;
printf("task2 running\r\n");
tos_task_delay(2000);
printf("suspend task1\r\n");
err = tos_task_suspend(&task1);
if(err != K_ERR_NONE)
printf("suspend task1 fail! code : %d \r\n",err);
tos_task_delay(2000);
printf("resume task1\r\n");
err = tos_task_resume(&task1);
if(err != K_ERR_NONE)
printf("resume task1 fail! code : %d \r\n",err);
tos_task_delay(2000);
printf("destroy task1\r\n");
err = tos_task_destroy(&task1);
if(err != K_ERR_NONE)
printf("destroy task1 fail! code : %d \r\n",err);
while(1)
{
printf("task2 running\r\n");
tos_task_delay(1000);
}
}
int main(void)
{
k_err_t err;
uart_init(115200);
printf("Welcome to TencentOS tiny\r\n");
tos_knl_init();
tos_robin_default_timeslice_config((k_timeslice_t)500u);
printf("create task1\r\n");
err = tos_task_create(&task1,
"task1",
test_task1,
NULL,
3,
task_stack1,
1024,
20);
if(err != K_ERR_NONE)
printf("TencentOS Create task1 fail! code : %d \r\n",err);
printf("create task2\r\n");
err = tos_task_create(&task2,
"task2",
test_task2,
NULL,
4,
task_stack2,
1024,
20);
if(err != K_ERR_NONE)
printf("TencentOS Create task2 fail! code : %d \r\n",err);
tos_knl_start();
}
代码进行了修改,来源是https://github.com/jiejieTop/TencentOS-Demo/tree/master/01-task ![在这里插入图片描述](https://img-blog.csdnimg.cn/a1624e6df55f4ef4be2fe2d20d57559a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMjU5NDI5,size_16,color_FFFFFF,t_70)
4、使用STlink V2下载程序,使用XCOM查看结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/0545cc40235c4189b4e04be078494994.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMjU5NDI5,size_16,color_FFFFFF,t_70#pic_center)
|