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

2019-07-14 16:55发布

       想利用DMA在内存和USART的数据寄存器之间,每隔100毫秒传输一次数据。
       实现方法是:用的SystickConfig()定时器每隔100毫秒产生一次中断,然后在中断里面应该写一句有关“USART请求DMA传输数据”的语句吧?但是好像找了半天手册都找不到关于这个功能的寄存器,,有没有路过的高手可以指点下啊,谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
zzw0719
1楼-- · 2019-07-14 18:41
 精彩回答 2  元偷偷看……
zzw0719
2楼-- · 2019-07-14 19:22
本帖最后由 你好我好大家好! 于 2014-11-16 19:28 编辑

看来是没有人回答了,还是自己回答一下吧:在SysTickConfig()中断函数服务函数中,只要写入这几句话就可以实现上述功能了:void SysTick_Handler(void)
                                {   //Tx通道传输数据量重加载
                                            DMA_Cmd(USARTx_TX_DMA_CHANNEL,DISABLE);         
                                        DMA1_Channel2->CNDTR=0x0A;
                                        DMA_Cmd(USARTx_TX_DMA_CHANNEL,ENABLE);         
        
                                      //Rx通道传输数据量重加载
                                       DMA_Cmd(USARTx_RX_DMA_CHANNEL,DISABLE);
                                          DMA1_Channel3->CNDTR=0x0A;
                                       DMA_Cmd(USARTx_RX_DMA_CHANNEL, ENABLE);

}              这个程序是一次要传输10个数据,传输数据量的值为0x0A
www030
3楼-- · 2019-07-14 23:11
加油!楼主自力更生。

也谢谢2楼朋友呢
TOPCB
4楼-- · 2019-07-15 01:19
不建议在滴答时钟里面加处理。可以通过在while里面定时器差值判断来发送数据。传输的设置和楼主设置一样就可以了。
zzw0719
5楼-- · 2019-07-15 01:33
TOPCB 发表于 2018-10-15 16:11
不建议在滴答时钟里面加处理。可以通过在while里面定时器差值判断来发送数据。传输的设置和楼主设置一样就可以了。

您好啊,我是新手,您能不能举个例子啊(就是如何在while里面用定时器差值来判断发送数据),谢谢了
TOPCB
6楼-- · 2019-07-15 02:03
 精彩回答 2  元偷偷看……

一周热门 更多>