FreeRTOS移植--时钟寄存器和串口寄存器

 最近在学习FreeRTOS,参考了很多文档,文档写的大同小异,无非都是告诉你拷贝list.c、task.c、timer.c、queue.c、croutine.c、event_group.c这六个文件,然后在去拷贝其他文件,最后挂载三个中断。的确,这几个步骤是移植最基本的,

做完这些操作移植就算成功了,再按照要求建任务写函数让led小灯闪烁,FreeRTOS就算跑起来了。

 在裸机下,stm已经做好了很多的库,大家直接使用就好了,而且直接操作寄存器的也有很多大神写好了,但是我突然

想做基于寄存器操作的FreeRTOS移植。以前看过原子哥寄存器版的stm32,感觉好像不难。按照正常移植操作后,提示我

有SystemInit()函数,我百度一下原因,说是在startup_stm32f10x_hd.s启动文件中,首先进入这个函数,刚开始我也没查这

个函数是干什么的,就直接在启动代码中删了这些,直接今入main函数。在main函数中直接创建任务,在任务函数中让小灯

闪烁,现象没有问题,以为移植成功。但是后来再做开发的时候,要用串口输出打印,结果输出全是00。刚开始以为是串口

配置有问题,反复查看初始化过程,显示初始化没有问题,最后没办法了,使用单步调试,发现是初始化串口时时钟不对,应

该在初始化串口前配置系统时钟。这才想起来原子哥的寄存器版,他是自己写的系统时钟配置函数,在进入main之后立马调用,

所以加上这些后,串口输出正常了。附件是工程代码。

你可能感兴趣的:(FreeRTOS移植--时钟寄存器和串口寄存器)