作为基本的通信手段,串口通信操作简单,使用方便,在几乎各种单片机芯片上都具备,我们今天就是要学着操作下stm32的串口,使之能与pc简单的通信,我们实现向PC机发送字符程序
像往常一样,我们首先要建立两个文件,即uart.c和uart.h文件,下面来看下我们来看看串口配置,直接上程序
void uart_init(u32 bound)
{ // NVIC_InitTypeDef NVIC_InitStructure;//建立各自的对象,然后对各自进行初始化
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
//串口使能USART1,GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
USART_DeInit(USART1);//串口1复位
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; // 设置为复用推挽输出
GPIO_Init(GPIOA,&GPIO_InitStructure); // 初始化GPIOA.9
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; // 设置为复用浮空输入
GPIO_Init(GPIOA,&GPIO_InitStructure); // 初始化GPIOA.10
USART_InitStructure.USART_BaudRate = bound; //波特率设置,可以用形参控制
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长为8位
USART_InitStructure.USART_StopBits = USART_StopBits_1; // 一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No; // 无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx|USART_Mode_Tx; //收发模式
USART_Init(USART1,&USART_InitStructure);//初始化串口
USART_Cmd(USART1,ENABLE); //使能串口
}
每句程序后面注释都非常明了,我们配置串口遵循以下步骤:
(1)串口时钟使能,GPIO时钟使能
(2)串口复位
(3)GPIO端口模式设置
(4)串口参数初始化
(5)初始化NVIC并且开启中断(如果需要串口中断,我们这里没有利用中断)
(6)使能串口
串口配置完了,我们可以利用以下几句程序来实现用printf直接打印而不需要再进行其他设置
这几句话,每次我们用到串口的时候都可以添加到uart.c文件中,用起来printf()函数非常方便
编写完uart.c以及uart.h后,我们就要处理主函数main了。。好了,直接上图
主函数就非常简单了,有人不禁要问,怎么没有设置系统时钟,其实我们在delay_init()函数中设置了,就像上面注释的一样,方便的设置了系统时钟,波特率也在串口初始化的时候建立了形参,可以方便的修改波特率,在while循环中直接调用printf函数,方便直接的向PC机打印信息
就这么简单。。。
上一篇:STM32之五外部中断(下)
下一篇:STM32让printf通过串口打印及自定义printf函数
推荐阅读最新更新时间:2024-11-18 19:56
设计资源 培训 开发板 精华推荐
- LT6109-1 演示板,具有基准和比较器的高侧电流检测
- LT1170CQ、12V/5A 负至正降压-升压转换器的典型应用
- REF195 精密微功耗、低压差电压基准的典型应用
- OP413ESZ-REEL 假接地发生器的典型应用
- USB Host应用MIC2025-2YM单通道配电开关MM8典型应用
- MTRCKTSBN5604P: 采用恩智浦MPC5604P MCU的3相无传感器BLDC开发套件
- 使用 NXP Semiconductors 的 TDA3616 的参考设计
- TAR5S19U 点稳压器(低压差稳压器)的典型应用
- 2013年D题:射频宽带放大器+733742A;
- LTC3414EFE 演示板,4A 单片,同步。降压稳压器,2.5 至 5.5Vin,跳线可选 1.8、2.5、3.3Vout @ 4A