(USART_TypeDef* USARTx, uint8_t ch){while((USARTx->SR&0X40)==0);//循环发送,直到发送完毕USARTx->DR = (ch & (uint16_t)0x01FF); }void printf_uart(USAR werywer2021-08-24 06:06:13 USART串口发送数据不对 _SendData(USART_Type
#include "stm32f10x.h" // 假设使用的是STM32F1系列微控制器 uint16_t USART_ReceiveData(USART_TypeDef* USARTx) { // 检查接收数据寄存器非空标志位(RXNE) while (!(USARTx->SR & USART_SR_RXNE)); // 读取数据寄存器中的内容并返回 return (uint16_t)(USARTx->DR & 0xFF); ...
此时我们就需要指明具体的寄存器地址数了,如USART1_BASE代表的常数,然后将此数转换成某个数据类型的指针强制转语句((USART_TypeDef *) USART1_BASE),就是告诉编译器此数据代表的是个内存地址
这句#define USART1 ((USART_TypeDef *) USART1_BASE)不是很明白什么意思。-其中,USART_YyeDef是个结构体,如下:typedef struct{ vu16 SR; u16 RESERVED0; vu16 DR; u16 RESERVED1; vu16 BRR; u16 RESERVED2; vu16 CR ...-OpenEdv-开源电子网