汇集网友智慧,解决技术难题
嵌入式 单片机 MUC 国产芯片
赞0
评论
2022-10-30
点击图片添加到编辑器内容中
点击文件名将附件添加到文章中
提交
tyw
317个答案
天意无罪
287个答案
xch
220个答案
jjjyufan
202个答案
coody
197个答案
LcwSwust
161个答案
chunyang
135个答案
呐咯密密
114个答案
赞0
{
dma_parameter_struct dma_init_struct;
rcu_periph_clock_enable(RCU_DMA);
dma_deinit(dma_channelx);
dma_init_struct.direction=dir;
dma_init_struct.memory_addr=memoryAddr;
dma_init_struct.memory_inc=DMA_MEMORY_INCREASE_ENABLE;
dma_init_struct.memory_width=DMA_MEMORY_WIDTH_8BIT;
dma_init_struct.number=datasize;
dma_init_struct.periph_addr=peripheralAddr;
dma_init_struct.periph_inc=DMA_PERIPH_INCREASE_DISABLE;
dma_init_struct.periph_width=DMA_PERIPHERAL_WIDTH_8BIT;
dma_init_struct.priority=DMA_PRIORITY_ULTRA_HIGH;
/* configure DMA mode */
dma_circulation_disable(dma_channelx); //禁止循环模式
dma_memory_to_memory_disable(dma_channelx); //禁止内存到内存
dma_init(dma_channelx,&dma_init_struct);
if(dma_channelx==DMA_CH4)
{
syscfg_dma_remap_enable(SYSCFG_DMA_REMAP_USART0RX);
}
if(dma_channelx==DMA_CH3)
{
syscfg_dma_remap_enable(SYSCFG_DMA_REMAP_USART0TX);
}
/* enable DMA channel */
dma_channel_enable(dma_channelx);
return 0;
}
void USART0_IRQHandler(void)
{
volatile uint32_t clear;
uint16_t msgLength = 0;
if(usart_interrupt_flag_get(USART0x, USART_INT_FLAG_IDLE) != RESET){
usart_interrupt_flag_clear(USART0x,USART_INT_FLAG_IDLE);
//使用长度=总长度-剩余的长度
msgLength = sizeof(gUartData.USART0_RxData)-(uint16_t)dma_transfer_number_get(DMA_CH4);
printf("channel%d %d %d\r\n",msgLength,sizeof(gUartData.USART0_RxData),dma_transfer_number_get(DMA_CH4));
//清除中断
clear=USART_STAT(USART0x);
clear=USART_RDATA(USART0x);
dma_channel_disable(DMA_CH4); //关闭DMA传输
Control_Upper_Computer((uint8_t*)gUartData.USART0_RxData, msgLength-2);
//由于是单次传输,需要再次初始化
dma_interrupt_flag_clear(DMA_CH4,DMA_INT_FLAG_FTF);
dma_interrupt_flag_clear(DMA_CH4,DMA_INT_FLAG_ERR);
dma_flag_clear(DMA_CH4,DMA_FLAG_FTF);
dma_flag_clear(DMA_CH4,DMA_FLAG_ERR);
dma_memory_address_config(DMA_CH4,(uint32_t)gUartData.USART0_RxData);
dma_transfer_number_config(DMA_CH4,sizeof(gUartData.USART0_RxData)); //数据传输量
dma_channel_enable(DMA_CH4); //开启DMA传输
printf("nbb\r\n");
}
}
评论
2022-10-30
您需要登录后才可以回复 登录 | 注册