aple0807
获得 301 次赞
帮助过677人
首先感谢社区和正点原子提供板卡试用机会。 下面看板卡 包装很到位 实验结果:红绿指示灯交替闪烁
本帖最后由 apleilx 于 2016-12-10 17:10 编辑 相比rtx,移植ucosiii可真是不顺利,刚开始移植的3.04运行了一段时间,但是添加浮点数运算的任务后,一运行竟然fault了,编译选项中是使用了fpu的,并且启动文件也开启了fpu。刚开始以为是代码有问题,仔细想想有不对,这些代码在m3上运行都是好好的,m4应该是兼容m3的,猜测可能是fpu配置不对。后来把断点设置在包含浮点数处理的程序中,打断后单步执行看汇编代码,确实使用了fup指令集,单步执行直到代码结束,没有fault,这下更郁闷了,可以确定不是fpu配置问题了。继续跟踪一直到调用系统调度器后,死了。之前没添加浮点数代码的时候运行正常,添加后调度器就死翘翘,没办法了,只好去找度娘,基本上都是说ucosiii官方的代码还不支持m4的fpu,可以通过修改cpu相关的代码来支持,总共有三处要修改,按照网上说的改了两个代码文件,但事实上并没有什么卵用,可能是我的版本不对,也可能是配置不匹配。不管了,去ucos官网找了找,发现有新版本的3.06,下来看看,代码里已经包含了fpu堆栈管理的代码,复制替换掉3.04的文件后再编译下载,一下子就好,那个感觉真是柳暗花明啊。倒腾大半天没搞定,结果换个系统几分钟九好,真应了那句“踏破铁鞋无觅处,得来全不费工夫”..... 下面把ucosiii移植到s6e2cc需要修改的地方罗列一下: 1、启动文件,ucosiii用到两个中断,复制官方的启动文件修改systick 和 pendsv的中断入口代码,用下面的代码替换原有的就可以了。 dcd os_cpu_pendsvhandler ; pendsv dcd os_cpu_systickhandler ; systick pubweak os_cpu_pendsvhandler section .text:code:reorder:noroot(1) os_cpu_pendsvhandler b
板子有个液晶屏就是好用,把printf映射到lcd用起来方便多了,不用连着电脑就能看到运行结果。 在之前帖子 基础上增加功能 添加了按键key0、key1检测处理 现在程序运行效果: lcd 前三行分别显示时间 、key0操作次数、key1操作次数 剩余的区域配置为printf函数的工作区 上面的两个按键每按下一次,打印一行按键信息,,按键计数器增1 编译器版本 iar arm7.70.1,调试器我用的ulink
本帖最后由 apleilx 于 2016-10-23 18:50 编辑 lcd的程序从官方例程里拷出来的,稍微有点改动,,,主要是哪个延时程序居然占用了systick定时器,太狗血了,,,简直是饕餮天物,基本上操作系统都会用到这个定时器的,我改成软件延时了,虽然不是那么精确,不过问题不大。 程序运行 显示时间,不过没有设定功能,固定从2000.1.1 12:30:00开始计时 程序移植了freertos,有兴趣的同学大家可以一起研究 编译器版本 iar arm7.70.1,调试器我用的ulink,其他的调试器要自己重新设定下,7.4以前的ide貌似是打不开的
本帖最后由 apleilx 于 2016-10-23 17:55 编辑 ^_^ 但凡是带led的评估板,拿到之后都会先做个呼吸灯出来 源文件上传居然无法保存,只好贴代码了 程序说明: 呼吸灯部分使用tim3实现,具体可以看代码了 工程用了freerost操作系统,ledtask是创建的一个任务 任务中for(;;)里面的第一行是同步时间事件的,表示10ms运行一次 至于文件里面定义的指示灯颜色大家可以忽略了,板子上都是红的,我这里只是作为控制标示
串口测试: 板子的usb转串口,连电脑后打开串口助手 波特率:19200 格式:8n1 每隔1s打印一次当前运行时间
板子大家都晒过了,我就不在贴图了。 板子刚到手出了点麻烦,板子的调试接口没有vcc管脚,我的ulink一直连不上,找了好长时间才发现是这个问题,把板载的3.3v拉过去就可以了。 板载的资源先利用一下,蓝色灯闪烁+红绿pwm做个多种颜色交替的呼吸灯 程序见附件: 板载的晶振不太合适,只好超频运行了 内核60mhz ,总线30mhz