真不知道你的程序是咋写的。估计是学院派学生党的水平吧。
要修改成真正能用的程序,估计程序架构要完全重写,搞不好连硬盘都要格式化,说起来话就太长了。
先说一个简单的办法吧。
你用的printf,通过串口输出,其实它是轮询方式的,发一个字符都会阻塞。而且直到串口发完,程序才会继续运行,所以尽量不要使用这个方式。
如果你非要用这个,可以将putc函数重载,然后自己用中断方式发送字符。
你可以搜一下,做一个缓冲队列,然后用中断的方式完成串口发送。就基本上不会影响程序的执行了。
当然,还跟你的波特率有关,如果波特率比较低,而你发送的内容又比较多,那么缓冲区也会很快填满,造成程序阻塞。
所以串口的波特率越高越好,不限于115200,甚至可以用230400或460800甚至921600,
当然,电脑本身的硬串口UART是不支持这么高的波特率的,但是很多USB转串口或者转TTL的芯片是支持到921600的。
当然你的上位机软件也要支持。有些超级终端支持这么高的波特率。比如SecureCRT等。如果是你自己编写上位机程序,也比较容易实现。
另外,如果做BLDC控制,换相时机非常重要。尤其是高转速的电机,每步时间也就几个mS,这个地方需要用中断来做,减少延迟。否则严重影响电机性能和效率。
|