本帖最后由 jsh560 于 2023-5-21 23:04 编辑
注意到GD32 systick.c文件里面有两种不同的实现方式,中断方式和轮询方式,但这两者貌似有区别。请教下各位前辈:
1,使用轮询方式的systick,调试USART1,DMA+空闲中断,调试OK。调用delay_1ms(1000),1ms的1000次就是1s,但实际发现没有1s,很快,像是只有几十ms一样。试着减少,调用delay_1ms(500),delay_1ms(600),delay_1ms(700),从串口助手,这些延时就没问题,delay_1ms(800)就出现问题。void delay_1ms(uint32_t count)中是uint32, 1000在这个范围内吧。不知道为什么会出现这个现象?
2,把systick轮询方式改为中断方式,delay_1ms(1000)做1s没问题了,但先前调试通的usart通信又不对了。systick我理解就是影响系统延时,不会影响串口通信吧,为什么会出现这个现象?
以上两个问题,哪位前辈能指点下吗?(咨询原厂,之前问了几个GD32使用问题,我们小公司,可能看不上我们用量,联系了几次后,后面不甩我了,发信息也不回了,哎,发现了几个GD32问题,不知道是我们使用问题,还是哪的原因。)想支持国产,奈何国产看不上我们。
|
嫌弃你支持的力度不够大 ^_^