初级会员

- 积分
- 158
- 金钱
- 158
- 注册时间
- 2017-2-23
- 在线时间
- 24 小时
|
20金钱
本人最近在学FreeRTOS,使用的是战舰V2.2版本。在移植的过程中,没按照原子哥的步骤,没移植sys、delay、usart文件夹,只是挂接了三个中断,修改了startup_stm32f10x_hd.s文件。但是在后来想用usart串口1了,由于之前看过原子哥的stm32的寄存器版本,就直接把寄存器版里的usart文件夹和sys.h文件添加进工程,修改了MY_NVIC_Init(6,0,USART1_IRQn,4)这个函数,把组2变成组4,优先级变成6。然后按照原子哥的教程代码,在主函数的xTaskCreate(start_task,.....)前添加初始化uart_init(72,115200),在task1_task()里面printf("task1 running!\r\n"),结果在串口调试助手里面输出的全是0。我知道是串口初始化有问题,或是时钟配置的不对,但是具体哪里不对就不清楚了,不知道哪位大神知道,小弟不吝赐教。。。 |
最佳答案
查看完整内容[请看2#楼]
问题解决了。是系统时钟没有初始化,在原子哥的玩转stm32寄存器版內,是原子哥自己实现的时钟配置函数,所以在startup_stm32f10x_hd.s文件中,没有SystemInit()函数。
而在FreeRTOS移植这本书中,在startup_stm32f10x_hd.s文件中,启动代码直接是从SystemInit()函数开始的,所以时钟是配置好的。而我在移植过程中,第一次运行代码时,
提示我没有SystemInit()这个函数,我直接在启动配置文件中删除了这行,所以才导致这个错误。
|