今天中午开始移植uCOSII
从网上下载了好几个STM32 上uCOSII 的 实验例子
其中主要有2个,一个是来自官方的uCOSII 例子,另一个是在OURAVR上找的一个例子
是哈工大某同学编的,用的是3.0的库,
我先着手官方的,打开后根据我的实验版修改了相应的IO配置(LED和按键接口),由于没有JoyStick 按键,就先把它空着了,然后编译成功,下载,但是目标版没反应,是了好几次
还是不行,用Debug , 总是运行不下去
然后又试着修改了好几个地方,始终没有成功,于是暂时放弃了在这个版本上编译
于是就从网上继续找,到OURAVR上找到一个STM32的 uCOSII 例子
下载下来
修改IO口,提示有个错误
查看,是在文件 bsp.c 中 RCC_PLLSource_HSE_Div1 没有定义,
查了一下觉得改起来麻烦,就直接把使用外部晶振换成使用内部晶振
直接调用SystemInit();函数,把出错的那段注释掉了
然后编译,正常
可是下载到板子里后还是没有反应
用Debug 调试,软件模拟仿真时一切正常,可是硬件Jlink调试时就走不动了,指针停留在
App_Fault_ISR 的地方,我想了半天想不通,难道是中断向量有问题?
查了几个例子的中断向量,是一样的,
然后又在谷歌上搜索关键字 STM32 uCOS App_Fault_ISR
结果又在OURAVR上找到了答案,刚才从那里论坛下载的例子,下面就有人回复说出现各种问题
其中就有 调试出现 我遇到的错误,
赶紧看,原来是一个串口函数printf() 有问题,
有人回复说自己写个函数把那个函数替换了就行,并给出了一个替换的函数
我先试着从自己电脑里其他例子里面调出一个串口驱动文件USART.C和 .H ,加入到例子里面,编译,修正了一些错误,并把printf全部替换为USART.C里面的串口发送文件,提示一堆错误
原来的printf()的形参和我替换的串口发送函数形参不一致,
于是又回到网上,把ouravr里一个人写的替换printf的函数换了进去
编译,还是不行,形参不一致,出现多处错误
没办法,继续回到论坛里,那个帖子继续往下看,有人给出链接,跳过去终于找到了解决方案
其实是编译器没有设置好造成的,
对于那个串口发送函数的解决办法是在
Option for target 选项里 切换到 target 分页 ;(就是设置晶振值的那页)
然后在Use Micro Lib 选项的前面打上对号,
然后编译,编译正常,下载,竟然还是没反应!,串口没有输出
赶紧用J-link Debug ,发现卡在串口发送的地方
郁闷了一小会儿,发现串口RCC时钟没有使能,晕
网上给的例子咋这个样子,于是一下子把所有外设的时钟都给它使能了
编译,下载
终于见到了期待已久的信息,串口发出了基本成功运行的信息
赶紧把这个扯蛋的调试过程发布出来,免得其他人再走弯路。
文章评论(0条评论)
登录后参与讨论