你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
小丁^_^ 发表于 2014-11-15 22:23 在STM32 3.5库里面就有关于DMA_Interrupt的例子,可以参考之
安 发表于 2014-11-18 16:43 不建议在滴答时钟里面加处理。可以通过在while里面定时器差值判断来发送数据。传输的设置和楼主设置一样就 ...
安 发表于 2014-11-20 14:05 比如滴答时钟中断中增加一个32位的变量。直接在中断中执行a++就可以了。再定义一个b,当a-b>规定时间时,发 ...
安 发表于 2014-11-24 09:21 是的。这样测试效果如何?
安 发表于 2014-11-26 09:46 你的程序中没有while循环吗?可以加一个延时。
你好我好大家好! 发表于 2014-11-27 10:16 昨天是我想错了,这样估计也可以
安 发表于 2014-11-27 10:49 嗯。有问题继续讨论就可以了。
谢谢了,我看了看你说的那个例程。和我表达的不是一个意思。我想实现的功能是:用DMA在串口和内存之间,每0.1s传输一次数据,这肯定的用到系统滴答定时器SysTickConfig()吧,然后在SysTickConfig()中断函数里面写一条关于串口请求DMA传输数据的语句,但是我在手册上找了半天还是找不到有关于串口请求DMA传输数据功能的寄存器,望高手指点一下,这个功能在哪里可以配置啊??万分感谢
看来是没有人回答了,还是自己回答一下吧:在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
也谢谢2楼朋友呢
您好啊,我是新手,您能不能举个例子啊(就是如何在while里面用定时器差值来判断发送数据),谢谢了
按您说的程序应该是这样吧
void SysTick_Handler(void)
{
a++;
}
然后再主函数中这样写:while(1)
{ *
*
if(a-b>规定时间)
{
发送数据;
b=a:
}
*
*
*
}
这样可以,但是在主函数中一直在执行while循环,这样会占用内存,不利于电机实时性地传输数据,不如中断好一些。如果说对于要求实时性低的系统来说,这样可以。
昨天是我想错了,这样估计也可以
嗯。有问题继续讨论就可以了。