上一节中成功实现了发送多个字节的数据.把需要发送的数据分成多段遵循uart协议的数据依次发送.上一节是使用状态机实现的,每发一次设定为一个状态,所以需要发送的数据越多,状态的个数越多,代码越长,因而冗长且适应范围不广 . 在这里,我通过优化代码,实现了把发送状态固定为3个,并且能适用任意长度的输入数据的功能.只需要修改一个参数即可实现. 学习: 1.error:cannot index into non-array type wire for 'dataN' 出现这个错误是因为dataN没有定义
l 串口时钟使能,GPIO时钟使能: RCC_APB2PeriphClockCmd(); l 串口复位: USART_DeInit(); 这一步不是必须的 l GPIO端口模式设置: GPIO_Init(); l 串口参数初始化: USART_Init(); l 开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) NVIC_Init(); USART_ITConfig(); l 使能串口: USART_Cmd(); l 编写中断处理函数: USARTx_IRQHandler(); l
DMA配置程序过程 使能DMA时钟 a) RCC_AHBPeriphClockCmd(); 初始化DMA通道参数 a) DMA_Init(); 使能串口DMA发送,串口DMA使能函数: a) USART_DMACmd(); 使能DMA1通道,启动传输. a) DMA_Cmd(); 查询DMA传输状态 a) DMA_GetFlagStatus(); 获取/设置通道当前剩余数据量: a) DMA_GetCurrDataCounter(); b) DMA_SetCurrDataCounter();