STM32标准库串口DMA空闲中断接收
1.STM32标准库时钟树设置2.通过keil内置标准库创建stm32工程3.STM32硬件IIC使用4.STM32FATFS文件系统移植5.STM32SPIFLASH读写6.STM32标准库内部Flash读写7.STM32F103xC,xD,xE引脚定义8.STM32标准库通用定时器PWM生成9.STM32标准库通用定时器计数10.STM32标准库基本定时器11.STM32标准库RTC时钟12.STM32ADC单通道转换
13.STM32标准库串口DMA空闲中断接收
14.STM32OLED使用15.STM32标准库低功耗16.STM32标准库通用定时器输出比较17.STM32标准库通用定时器输入捕获18.STM32硬件IIC使用1.DMA配置(USART配置在USART中已实现,不再重复叙述)
需要使用标准库头文件“stm32f10x_dma.h”
DMA_InitTypeDef Usart_DMA;//定义DMA结构体
DMA_DeInit(DMA1_Channel5);//初始化DMA通道
Usart_DMA.DMA_BufferSize = 256;//定义DMA缓存区大小
Usart_DMA.DMA_DIR = DMA_DIR_PeripheralSRC;//定义DMA传输方向
Usart_DMA.DMA_M2M = DMA_M2M_Disable;//定义DMA是否用于内存到内存传输
Usart_DMA.DMA_MemoryBaseAddr = (uint32_t)usart1Recdata;//定义DMA内存指向地址
Usart_DMA.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;//定义DMA内存每一帧数据大小
Usart_DMA.DMA_MemoryInc = DMA_MemoryInc_Enable;//定义DMA内存是否递增
Usart_DMA.DMA_Mode = DMA_Mode_Normal;//定义DMA传输模式
Usart_DMA.DMA_PeripheralBaseAddr = (uint32_t)(&USART1->DR);//定义DMA外设地址
Usart_DMA.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;//定义DMA外设每一帧数据大小
Usart_DMA.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//定义DMA外设是否递增
Usart_DMA.DMA_Priority = DMA_Priority_High;//定义DMA优先级
DMA_Init( DMA1_Channel5,&Usart_DMA);//将DMA结构体载入到指定DMA通道
USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);//使能DMA接收
DMA_Cmd(DMA1_Channel5,ENABLE);//开启DMA通道
2.DMA空闲中断接收配置
void USART1_IRQHandler(void)
{
uint8_t temp[256] = {0};
if(USART_GetITStatus(USART1,USART_IT_IDLE) !=RESET){//检查空闲中断标志量
DMA_Cmd(DMA1_Channel5,DISABLE);//关闭DMA通道,防止数据丢失
memcpy(temp,usart1Recdata,256);
USART_SendString(USART1,temp);
USART_SendByte(USART1,'\n');
memset(usart1Recdata,0,sizeof(usart1Recdata));
memset(temp,0,sizeof(temp));
USART_ClearITPendingBit(USART1,USART_IT_IDLE);//清除空闲中断标志量
DMA_SetCurrDataCounter( DMA1_Channel5, 256 );//设置DMA计数器
DMA_Cmd(DMA1_Channel5,ENABLE);//开启DMA通道
USART_ReceiveData(USART1);//清除串口中断
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤