【嵌入式蓝桥杯】 配置串口 调用固件库的方法 完整版本

本文详细介绍了如何使用STM32固件库快速配置串口,包括串口初始化、GPIO设置、中断配置以及printf函数的定制,以适应嵌入式蓝桥杯比赛的需求。通过实例代码解析了STM32F10x的USART配置步骤,减少了手动配置的时间,简化了流程,特别适合时间紧迫的情况。

嵌入式蓝桥杯 配置串口 调用固件库的方法


因为比赛时间要求的比较紧 所以调用固件库可以很快的节省时间
这里调用固件库配置串口发送分两次
一次是配置串口初始化
一次是使用printf打印的字符
串口初始化化路径
\STM32固件库v3.5\STM32F10x_StdPeriph_Lib_V3.5.0\Utilities\STM32_EVAL\STM3210B_EVAL
打开stm3210b_eval.c文件找到这个函数

void STM_EVAL_COMInit(COM_TypeDef COM, USART_InitTypeDef* USART_InitStruct)

有一说一 这个函数复制上去
从配置过程上并没有节省多少时间
但是减少了思考的时间
也就是说 思维清晰的话直接写感觉还比较好一点

我们看看这个函数
如果我们要使用PA2PA3作为串口
我们只需要开启串口2时钟 和GPIOA的时钟就可以了
不用开启端口重映射 这些通通删去
原来的时钟代码

  /* Enable GPIO clock */
  RCC_APB2PeriphClockCmd(COM_TX_PORT_CLK[COM] | COM_RX_PORT_CLK[COM] | RCC_APB2Periph_AFIO, ENABLE);

  if (COM == COM1)
  {
   
   
    RCC_APB2PeriphClockCmd(COM_USART_CLK[COM], ENABLE); 
  }
  else
  {
   
   
    /* Enable the USART2 Pins Software Remapping */
    GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
    RCC_APB1PeriphClockCmd(COM_USART_CLK[COM], ENABLE);
  }

改成

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2 , ENABLE);

接着我们看GPIO
PA2是写 PA3是读 直接改Pin就好了

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);


  /* Configure USART Rx as input floating */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* USART configuration */
  USART_Init(COM_USART[COM], USART_InitStruct);
    
  /* Enable USART */
  USART_Cmd(COM_USART[COM], ENABLE);

接下来是一个初始化 一个通道
这个我们改成USART2 就好了
接下来我们打开初始化的那个文件
路径如下
STM32固件库v3.5\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\USART\Printf
找到main.c
开头就是一段初始化配置串口的配置
然后我们复制她 同时对我们第一个复制函数做一些更改
就是一个函数包含另一个函数
代码贴出来 自己看吧

#include "uart.h"
void STM_EVAL_COMInit(USART_InitTypeDef* USART_InitStruct)
{
   
   
	GPIO_InitTypeDef GPIO_InitStructure;

  /* Enable GPIO clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2 , ENABLE
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-ATAO----

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值