STM32基本的串口通信调试实验,实验现象:发送内容在串口调试助手上显示。
单片机源程序如下:
- #include "stm32f10x.h"
- void My_USART1_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStrue;//定义IO接口结构体
- USART_InitTypeDef USART_InitStrue;//定义串口相关结构体
- NVIC_InitTypeDef NVIC_InitStrue;//定义中断相关结构体
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//初始化GPIOA时钟
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//初始化串口USART时钟
-
- GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;//推挽复用输出
- GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;//开启9号IO口
- GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;//端口速度10MHz
- GPIO_Init(GPIOA,&GPIO_InitStrue);//GPIOA9初始化
-
- GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入
- GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;//开启10号IO口
- GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;//端口速度10MHz
- GPIO_Init(GPIOA,&GPIO_InitStrue);//GPIO10初始化
-
- USART_InitStrue.USART_BaudRate=115200;//串口波特率设置
- USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//无硬件流
- USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//发送,接收使能
- USART_InitStrue.USART_Parity=USART_Parity_No;//无奇偶校验
- USART_InitStrue.USART_StopBits=USART_StopBits_1;//停止位为1
- USART_InitStrue.USART_WordLength=USART_WordLength_8b;//字长8位
- USART_Init(USART1,&USART_InitStrue);//USART1初始化
- USART_Cmd(USART1,ENABLE);//使能串口1
-
- USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//中断配置:开启接收中断(接受缓存器非空使能,ENABLE)
- NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;//定义中断通道
- NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;//开启中断通道
- NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;//设定抢占优先级为1
- NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;//设定子优先级为1
- NVIC_Init(&NVIC_InitStrue);//中断初始化
- }
- void USART1_IRQHandler(void)//编写中断处理函数
- {
- u8 res;//无符号字符res
-
- if(USART_GetITStatus(USART1,USART_IT_RXNE))//接收数据进入中断,判断串口1接收缓存器非空使能为1与否
- {
- res= USART_ReceiveData(USART1); //为1,则将串口1的数据给变量
- USART_SendData(USART1,res); //继续将此数据从USART1发送出去
- }
- }
-
- int main(void)
- {
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设定优先级分组为2,2位抢占2位响应
- My_USART1_Init();//调用串口函数
- while(1);//无数据时死循环,有数据时进中断收数据发数据完了再读主程序
-
- }
复制代码
所有资料51hei提供下载:
串口通信.rar
(286.91 KB, 下载次数: 277)
|