全部改成C代码后,程序正常了.
至少说明,48MHz单片机条件下,C的效率还是比C++高.
改C的过程中,似乎明白为什么库函数关于寄存器的操作都是用的结构体加指针,因为这样和C++的结构差不多,改起来也比较方便.
似乎以后可以先用C++开发,再转C优化.
:lol
是不是你的串口收发栈溢出了,导致另外的任务栈乱掉了?
nongxiaoming 发表于 2016-9-29 11:59
是不是你的串口收发栈溢出了,导致另外的任务栈乱掉了?
不是的.
是不是中断函数与任务函数共享变量了?
在任务函数修改可能在中断函数使用的变量最好把中断临时关掉,注意中断关掉时间不要过长,
__disable_irq();
__enable_irq();
cloudcn 发表于 2016-9-29 12:49
是不是中断函数与任务函数共享变量了?
在任务函数修改可能在中断函数使用的变量最好把中断临时关掉,注意 ...
双缓冲,不会有这个问题.
andrewz 发表于 2016-9-29 12:52
双缓冲,不会有这个问题.
方便的话可工程粘出来,研究下?
c++不频烦的删除和创建对象效率不会比c差太多,没准是对象或指针没处理好造成的
目前问题已经规避了.
在C下面不会出现由于串口导致的float崩溃问题.
但是在更加高端的F407上面,即使用C++也没有发现float崩溃.
:lol
DMA在C语言下面可能又不是一个好的选择.或许是自己用得还不习惯.
现在每10ms发送8个byte,接收还有float运算都能正常工作.
:lol
没发现这种问题,一直做项目都是所有串口dma,用得双双的
:lol
现在每个大周期,1.5ms里面发送8个byte也没有问题,相当于用115200的波特率实现了53333的有效波特率.
:lol:lol
如果没错的话,是可以发送16个byte没有问题的~
关注一下这个问题