STM32的串口1 的函数,采用操作寄存器的方式
时间: 2024-02-11 15:06:56 浏览: 26
在STM32中,串口1对应的寄存器是USART1,我们可以使用操作寄存器的方式来访问USART1控制寄存器和数据寄存器,例如:
```c
#include "stm32f4xx.h"
void USART1_Init() {
// 使能 USART1 时钟
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
// 设置串口1为波特率 9600,数据位 8,停止位 1,无校验位
USART1->BRR = SystemCoreClock / 9600;
USART1->CR1 = USART_CR1_TE | USART_CR1_RE;
USART1->CR2 = 0;
USART1->CR3 = 0;
// 使能串口1
USART1->CR1 |= USART_CR1_UE;
}
void USART1_SendChar(char c) {
// 等待发送缓冲区为空
while (!(USART1->SR & USART_SR_TXE));
USART1->DR = c;
}
char USART1_ReadChar() {
// 等待接收缓冲区非空
while (!(USART1->SR & USART_SR_RXNE));
return USART1->DR;
}
void USART1_SendString(char *str) {
while (*str) {
USART1_SendChar(*str++);
}
}
```
在这个例子中,我们首先调用USART1_Init函数来初始化USART1,设置其波特率、数据位、停止位和校验位等参数,并使能USART1。然后,我们可以使用USART1_SendChar和USART1_SendString函数来向串口1发送字符和字符串,使用USART1_ReadChar函数来从串口1读取字符。
需要注意的是,为了提高代码的可读性,我们使用了CMSIS库中的头文件来定义寄存器和位域,例如RCC_APB2ENR_USART1EN表示USART1时钟使能位,USART_CR1_TE表示USART1发送使能位等。这样,我们就可以直接通过寄存器名和位域名来操作寄存器,而不需要使用底层的位运算或指针操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)