本帖最后由 hpdell 于 2012-12-14 10:13 编辑
参考stm32f1xx的帖子修改而来,望多多指教
在此感谢感谢!!!11
http://www.amobbs.com/forum.php? ... C%E5%8F%91%E9%80%81
顺便请教下,我想用DMA发送一个字符或者多个字符时,调试没有成功,请大仙们指点指点一下!
此工程文件不含固件库,使用者需要自己增加固件库,固件库与本工程文件放同一目录就可以了,路径请自行修改!!
//USART1使用DMA接收数据中断服务程序, DMA接收完成中断
void DMA2_Stream5_IRQHandler(void)
{
/* Test on DMA Stream Transfer Complete interrupt */
if(DMA_GetITStatus(DMA2_Stream5, DMA_IT_TCIF5)) //此处是我增加,不然单片机会不停的发送数据给pc机
{
DMA_ClearITPendingBit(DMA2_Stream5,DMA_IT_TCIF5);
DMA_ClearITPendingBit(DMA2_Stream5,DMA_IT_TEIF5);
DMA_Cmd(DMA2_Stream5, DISABLE); //关闭DMA,防止处理其间有数据
DMA2_Stream5->NDTR = RECAVEMAXCOUNT; //重装填
DMA_Cmd(DMA2_Stream5, ENABLE); //处理完,重开DMA
}
}
//USART1使用DMA发数据中断服务程序
void DMA2_Stream7_IRQHandler(void)
{
if(DMA_GetITStatus(DMA2_Stream7, DMA_IT_TCIF7) != RESET)
{
DMA_ClearITPendingBit(DMA2_Stream7,DMA_IT_TCIF7);
DMA_ClearITPendingBit(DMA2_Stream7,DMA_IT_TEIF7);
USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);
DMA_Cmd(DMA2_Stream7, DISABLE); //关闭DMA
USART1_TxFinish = 1; //置DMA传输完成
}
}
工程文件:
V26-DMA2_Stream5.zip
(76.78 KB, 下载次数: 151)
2012-12-14 10:04 上传
点击文件名下载附件
An Idle character is interpreted as an entire frame of “1”s followed by the start bit of the next
frame which contains data (The number of “1” ‘s will include the number of stop bits)。
在线路为全"1"(空闲)之后出现一个"start bit"才判定是IDLE;
这样的话 需要发送方 发送一个空闲帧 DAM才能起作用 ! 不知我的理解是否有问题?
一周热门 更多>