STM32F030R8T6 串口2 初始化代码示例

以下是 STM32F030R8T6 串口2 初始化代码的示例:

#include "stm32f0xx.h"

void USART2_Init(void) {
    // 使能 USART2 和 GPIOA 的时钟
    RCC->APB1ENR |= RCC_APB1ENR_USART2EN;
    RCC->AHBENR |= RCC_AHBENR_GPIOAEN;

    // 配置 PA2(PB10) 为 TX 引脚和 PA3(PB11) 为 RX 引脚
    GPIOA->MODER &= ~(GPIO_MODER_MODER2 | GPIO_MODER_MODER3);
    GPIOA->MODER |= GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1;
    GPIOA->AFR[0] &= ~(GPIO_AFRL_AFRL2 | GPIO_AFRL_AFRL3);
    GPIOA->AFR[0] |= 1 << (2 * 4) | 1 << (3 * 4);

    // 配置波特率为 115200
    USART2->BRR = SystemCoreClock / 115200;

    // 配置 USART2 为 8 位数据位,1 位停止位,无校验位
    USART2->CR1 &= ~(USART_CR1_M | USART_CR1_PCE);
    USART2->CR2 &= ~USART_CR2_STOP;
    USART2->CR1 |= USART_CR1_TE | USART_CR1_RE | USART_CR1_UE;
}

int main(void) {
    USART2_Init();

    while (1) {
        // 串口发送数据
        USART2->TDR = 'A';
        while (!(USART2->ISR & USART_ISR_TXE));
    }
}

在该示例中,我们首先使能 USART2 和 GPIOA 的时钟,并配置 PA2(PB10) 为 TX 引脚和 PA3(PB11) 为 RX 引脚。然后,我们配置波特率为 115200,数据位为 8 位,停止位为 1 位,无校验位。最后,在主函数中,我们通过串口向外发送一个字符 'A'。

STM32F030R8T6 串口2 初始化代码示例

原文地址: https://www.cveoy.top/t/topic/n4NF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录