
STM32407 使用串口闲时中断+DMA方式接收最大接收字节是多少
STM32L433VCT6 进入STOP模式2之后,功耗依然和正常运行模式没有差别,请教大神
6.28周六签到打卡
foc2.0函数SVPWM_3ShuntCalcDutyCycles看不明白
请问有stm32f103驱动无刷电机的学习资料吗,找了很久都没有找到
STM32F103RET6 FLASH擦除失败问题
stm32编码器模式计数问题
关于ASM330LHH TR调试中的问题
STM32会存在单个IO口坏掉的情况吗?
STM32N6570-DK开发板,哪里还有卖的?
或空闲事件,待事件发生时 才 会基于中断去处理。
基于DMA方式做UART的发送和基于中断方式做数据发送,在CPU的占用上有明显差别。基于中断方式的发送,定会每
发生1个数据得申请中断让CPU来搬运数据到发送寄存器,如果是基于DMA方式,发送过程中CPU可以被完全释放出来。
对于大量数据的传输,使用DMA比串口中断方式更能释放CPU,让其做更重要或紧急的事情。
至于效率的高低,看你站在哪个角度来评价。单从实现传输的角度讲,DMA方式未必就一定比基于中断方式高。
打个比方,你想发个东西给某人,你自己亲历亲为跟选择快递,谁的效率高,不可一概而论。但可以肯定,
若选择快递,你可以释放出来做其它事情。
对于少量数据来说,是否dma驱动方式与串口中断驱动区别不大。很多场合可能差别不大,反正只是种提供数据的方式。
我觉得关键是要看,整个系统中CPU是否忙得过来,CPU响应中断时会不会影响更重要事情的及时处理。
其次DMA接收数据的个数是之前设定好的,如果超出来是需要及时处理。
所以,采用DMA完成中断的方式是效率最高的一种方式,在完成中断中决定是否继续接收数据。
另外标准库已经是很古老的方式了,建议与时俱进,采用cube库更加先进好用。
我想了想,是不是可以使用dma传输时,设置一个一个标志位置1,在dma完成中断中把标志位清除,每次发送数据时就while判断这个标志位,这样应该比死等待转运效率高些把?
好的,明白了,感谢大佬。
hal库学了的,但平时还是用的标准库,不是说标准库好找工作吗?
DMA传输完成了就会产生相应事件,我们基于该事件的中断决定后续操作,包括标志位的处理,不用死等什么的。
[md]但我发送数据不知道dma这时是否在空闲状态啊,不应该等待?或者等待一定时间?
DMA是通过串口的请求的才会响应的。
标准库是以前通用的。
但是芯片发展越来越先进,功能越来越多,标准库已经不适应发展了。
你可以留意一下,新出的芯片都没有标准库了。