串口是指外设和处理器之间通过数据信号线、地线和控制线等,按位进行数据传输的一种通讯方式
要先配置使能串口 需要配置 波特率 数据位 奇偶校验位 停止位,调用发送函数
波特率 表示每秒钟传送bit的个数
数据位 表示一个信息包里包含的数据位的个数
停止位 表示单个信息包的最后位
奇偶校验位表示一种检查数据错误的方式
波特率计算方法
个字节是8bit,如果波特率是9600bps,理论上1秒可以传输9600/8=1200字节如果波特率是115200bps,理论上1秒可以传输115200/8=14400字节
串口通信是一位一位地传输,每传输一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平),后面由7位数据位组成,接着是一位校验位,最后是停止位。停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。
串口发送数据
1.串口配置(属于外设)
①开启时钟
时钟宏定义
#define BSP_USART_RCU RCU_USART0 时钟定义
#define BSP_USART_TX_RCU RCU_GPIOA 接收
#define BSP_USART_RX_RCU RCU_GPIOA 发送
时钟使能
Rcu_periph_clock_enable( BSP_USART_RCU); //开启串口时钟
Rcu_periph_clock_enable(BSP_USART_TX_RCU )开启端口时钟
Rcu_periph_clock_enable(BSP_USART_RX_RCU )开启端口时钟
②GPIO配置
/*开启时钟 先开启GPIO其中是PA9 与PA10控制*/
rcu_periph_clock_enable( BSP_USART_TX_RCU); //设置输入输出
rcu_periph_clock_enable( BSP_USART_RX_RCU);
rcu_periph_clock_enable( BSP_USART_RCU);//使能串口0
/*配置GPIO复用(AF)*/
gpio_af_set(BSP_USART_TX_PORT,BSP_USART_AF,BSP_USART_TX_PIN); //GPIO是串口功能所以选择AF 7
gpio_af_set(BSP_USART_RX_PORT,BSP_USART_AF,BSP_USART_RX_PIN); //GPIO是串口功能所以选择AF 7
//GPIO模式mode
/*配置复用功能模式 配置上拉模式*/
gpio_mode_set(BSP_USART_TX_PORT,GPIO_MODE_AF,GPIO_PUPD_PULLUP,BSP_USART_TX_PIN);
gpio_mode_set(BSP_USART_RX_PORT,GPIO_MODE_AF,GPIO_PUPD_PULLUP,BSP_USART_RX_PIN);
/*配置GPIO输出*/
gpio_output_options_set(BSP_USART_TX_PORT,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,BSP_USART_TX_PIN);
gpio_output_options_set(BSP_USART_RX_PORT,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,BSP_USART_RX_PIN);
③串口参数配置
/*配置串口数据参数 1波特率2数据位3停止位4奇偶效验位*/
usart_deinit(BSP_USART);//选择串口0
usart_baudrate_set(BSP_USART,115200);//配置波特率
usart_parity_config(BSP_USART,USART_PM_NONE);//配置校验位 无校验位这里选择 USART_PM_EVEN这个是 偶数
usart_word_length_set(BSP_USART,USART_WL_8BIT);//配置数据位 8
usart_stop_bit_set(BSP_USART,USART_STB_1BIT);//停止位
④使能串口
/*使能串口*/
usart_enable(BSP_USART);
/*配置串口发送*/
usart_transmit_config(BSP_USART,USART_TRANSMIT_ENABLE);//USART_TRANSMIT_ENABLE使能串口传输
2.串口发送数据
串口发送字符函数
usart_gpio_config();
usart_send_data('h');
串口发送字符串
3.串口实验