软件定时触发USART请求DMA传输数据找不到关于这个功能的寄存器

2019-07-14 16:55发布

       想利用DMA在内存和USART的数据寄存器之间,每隔100毫秒传输一次数据。
       实现方法是:用的SystickConfig()定时器每隔100毫秒产生一次中断,然后在中断里面应该写一句有关“USART请求DMA传输数据”的语句吧?但是好像找了半天手册都找不到关于这个功能的寄存器,,有没有路过的高手可以指点下啊,谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
zzw0719
1楼-- · 2019-07-15 05:22
TOPCB 发表于 2018-10-15 16:30
比如滴答时钟中断中增加一个32位的变量。直接在中断中执行a++就可以了。再定义一个b,当a-b>规定时间时,发送数据,并且b=a;

按您说的程序应该是这样吧
    void SysTick_Handler(void)
      {
        a++;
       }
然后再主函数中这样写:while(1)
                                 {        *
                                           *
                                    if(a-b>规定时间)
                                        {
                                            发送数据;
                                            b=a:
                                         }
                                             *
                                             *
                                             *
                                  }
                             
TOPCB
2楼-- · 2019-07-15 10:18
是的。这样测试效果如何?
zzw0719
3楼-- · 2019-07-15 12:37
TOPCB 发表于 2018-10-15 17:06
是的。这样测试效果如何?

这样可以,但是在主函数中一直在执行while循环,这样会占用内存,不利于电机实时性地传输数据,不如中断好一些。如果说对于要求实时性低的系统来说,这样可以。
TOPCB
4楼-- · 2019-07-15 14:06
你的程序中没有while循环吗?可以加一个延时。
zzw0719
5楼-- · 2019-07-15 18:51
 精彩回答 2  元偷偷看……
TOPCB
6楼-- · 2019-07-15 20:17
zzw0719 发表于 2018-10-15 17:33
昨天是我想错了,这样估计也可以

嗯。有问题继续讨论就可以了。

一周热门 更多>