stm32mp157学习记录 uart开发

本文详细介绍了一个基于C语言的UART4通信控制函数,包括数据接收(get_a_byte),发送(send_a_byte和send_string)以及初始化(uart_init)过程。通过实例展示了如何配置GPIO、设置波特率和数据位,以及处理中断和数据传输状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unsigned char get_a_byte()

{

    unsigned char c;

    while(!(USART4->ISR & (0X1 << 5)));            // 判断RXFIFO中数据是否被接收

    c = USART4->RDR;                               // 接收数据

    return c;

}

void send_a_byte(const char data)

{

    while(!(USART4->ISR & (0X1 << 7)));            // 判断TXFIFO是否为满

    USART4->TDR = data;                            // 发送数据

    if (data == '\n')

        putc('\r');

    while(!(USART4->ISR & (0X1 << 6)));           // 判断是否发送完成

}

void send_string(const  char  *pstr)

{

    while(*pstr != '\0')

        putc(*pstr++);

}

void uart_init()

{

    GPIOG->MODER &= ~(0x3 << 22);

    GPIOG->MODER |= 0x2 << 22;      //PG11    设置为复用功能

    GPIOG->AFRH &= ~(0xf << 12);

    GPIOG->AFRH |= 0x6 << 12;        //复用功能选择用于UART4_TX

    GPIOB->MODER &= ~(0x3 << 4);

    GPIOB->MODER |= 0x2 << 4;        //PB2      设置为复用功能

    GPIOB->AFRL &= ~(0xf << 8);

    GPIOB->AFRL |= 0x8 << 8;          //复用功能选择用于UART4_RX

    USART4->CR1 &= (~(0x1 << 28) | ~(0x1 << 12));                 //设置1 Start bit,8 Data bits,

    USART4->CR1 &= (~(0x1 << 15));                                 // 采样率为16位

//这里使用内部默认时钟   频率为64MHZ

    USART4->PRESC &= ~0xf;            //预分频寄存器   不分频

    USART4->BRR |= 0x22b;  //64000000/115200 = 0x22b   //波特率为115200

//  Example 1

// To obtain 9600 baud with usart_ker_ck_pres= 8 MHz:

// • In case of oversampling by 16:

// USARTDIV = 8 000 000/9600

// BRR = USARTDIV = 833d = 0341h

    USART4->CR2 &= ~(0x3 << 12);         //设置 1 stop bit


 

    USART4->CR1 |= (0x1 << 0);               //USART使能

    USART4->CR1 |= (0x3 << 2);               // TXD与RXD使能,可以接收与发送数据

}

可以对照着资料去翻寄存器学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值