贴上我的答案——
“你好,感谢你的耐心指导
由于其他项目比较着急,ccs的浮点运算问题搁置了几天。今天调了一下,成功将运算时间减至7ms,网上找不到类似这种的处理方法(或者说我不会用搜索引擎),将之记录如下,以供后来人参考
本项目主要功能是获取、处理、发送大量浮点型数据,在ccs的项目默认设置中,程序无法正常进入中断。经过多方尝试,排除干扰函数,稍稍可以得出内存溢出的结论,从map文件中可看到,由于程序使用了大量全局变量,RAM几近填满
查看详情
程序自然报错。参考IAR的设置查看详情,将ccs也修改为32位(右键项目>>build>>optimization>>Inline hardware multiply version of RTS mpy routine(--use_hw_mpy)>>32)
查看详情
程序运行时间大大缩短,已达到项目要求。但是我后来发现,下位机串口每隔1s发送数据,发送30s左右后,再也进不了串口中断,而定时中断,ad12的中断可以正常响应。网上的前辈说是串口中断溢出,需要清空溢出标志位,但是通过寄存器窗口发现这并不符合我的情况。通过map文件,发现RAM的使用度还是很大,于是我把所有的double全改成float,RAM空间大致还剩500byte左右。这时串口中断可以一直响应
然后新的问题就来了,串口发送的数据是错误的(事实上上一步的串口数据也是错误的)
查看详情
今天要端午放假的小菜鸟我比较快乐,快乐地在想:那个none是什么意思
查看详情
设置了之后,串口正常响应,数据接收正确
查看详情
至此,问题完美解决(也许并不完美)。以上用词并不专业,也许还有逻辑bug,贻笑各位了”
|