您的位置 首页 报告

STM32F103的简易串口驱动(查询方法)

对于各个模块的学习,开始通常是只使用最简单的功能。这里将给出一个STM32F103的最基本的串口收、发驱动。要使用串口,就需要对串口的波特…

关于各个模块的学习,开端通常是只运用最简略的功用。这儿将给出一个STM32F103的最基本的串口收、发驱动。要运用串口,就需求对串口的波特率、数据格式等进行设置。这儿给出的比如是运用的USART1,它的时钟是连接在APB2上的,在核算波特率时应该运用APB2的输出时钟。别的,运用查询方法的话,还需求制止掉串口的相关中止,以避免程序跑飞。因为STM32F103的串口引脚是跟一般IO口复用的,所以在运用之前,一定要记住初始化对应的IO口,挑选为相应的第二功用,不然串口将无法正常作业。

首要对照STM32F103的数据手册,将相关寄存器的界说写好,放在USART.h头文件中。然后增加对串口的初始化、串口读写操作的函数即可。本测验程序功用很简略,开机时经过串口发送一个”System start…”的字符串,然后等候串口接纳数据。当接纳到数据后,将数据经过串口回来,然后流水灯作业一次,又持续等候接纳数据。
本测验程序设置的波特率为9600,由宏BIT_RATE界说,然后在程序中核算需求设置的分频值。小数部分中的值为实践的小数部分乘以16。
部分代码如下:
#include “USART.H”
#include “gpio.h”
#define BIT_RATE 9600
#define USART_CLK 72000000UL
//串口初始化,波特率为9600
void Usart1Init(void)
{
//设置波特率分频器
pbUSART1_BRR->DIV_Mantissa=(USART_CLK/16/BIT_RATE);
pbUSART1_BRR->DIV_Fraction=(USART_CLK/BIT_RATE);
//使能串口1
pbUSART1_CR1->UE=1;
//0: 1 Start bit, 8 Data bits, n Stop bit
pbUSART1_CR1->M=0;
//制止奇偶校验
pbUSART1_CR1->PCE=0;
//制止串口1的一切中止
pbUSART1_CR1->PEIE=0;
pbUSART1_CR1->TXEIE=0;
pbUSART1_CR1->TCIE=0;
pbUSART1_CR1->RXNEIE=0;
pbUSART1_CR1->IDLEIE=0;
//使能串口1发送
pbUSART1_CR1->TE=1;
//使能串口1接纳
pbUSART1_CR1->RE=1;
//1位中止位
pbUSART1_CR2->STOP=0;
//制止LIN Break Detection Interrupt
pbUSART1_CR2->LBDIE=0;
pbUSART1_CR3->CTSIE=0;
pbUSART1_CR3->CTSE=0;
pbUSART1_CR3->RTSE=0;
pbUSART1_CR3->DMAT=0;
pbUSART1_CR3->DMAR=0;
pbUSART1_CR3->SCEN=0;
pbUSART1_CR3->NACK=0;
pbUSART1_CR3->HDSEL=0;
pbUSART1_CR3->IRLP=0;
pbUSART1_CR3->IREN=0;
pbUSART1_CR3->EIE=0;
//TXD引脚设置(连接在PA9上)
GPIOA_MODE9=3; //50MHz输出形式
GPIOA_CNF9=2;//第二功用推挽输出形式
//RXD引脚设置(连接在PA10上)
GPIOA_MODE10=0; //输入形式
GPIOA_CNF10=1;//高阻输入
}
//从串口1等候1字节数据
unsigned char Usart1GetChar(void)
{
while(!pbUSART1_SR->RXNE);
return pbUSART1_DR->DR;
}
//往串口1发送1字节
void Usart1PutChar(unsigned char Value)
{
while(!pbUSART1_SR->TXE);
pbUSART1_DR->DR=Value;
}
//往串口1发送一个字符串
void Usart1PutString(unsigned char *pString)
{
unsigned int i;
i=0;
while(pString[i])
{
Usart1PutChar(pString[i]);
i++;
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/266343.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部