stm32f103 输出方波互补波形

image当时遇到一个棘手的难题,串口有时接受不到数据

因为定义的问题

void Usart1_init() {
uint32_t usart_tx_rcu = RCC_APB2Periph_GPIOA;
GPIO_TypeDef * usart_tx_port = GPIOA;
uint32_t usart_tx_pin = GPIO_Pin_9;


uint32_t usart_rx_rcu = RCC_APB2Periph_GPIOA;
GPIO_TypeDef * usart_rx_port = GPIOA;
uint32_t usart_rx_pin = GPIO_Pin_10;


uint32_t usart_rcu = RCC_APB2Periph_USART1;
USART_TypeDef * usart = USART1;
uint32_t usart_irq = USART1_IRQn;

uint32_t usart_param_baudrate = 115200;

GPIO_InitTypeDef GPIO_InitStructure;

// 1. 开启时钟
RCC_APB2PeriphClockCmd(usart_tx_rcu, ENABLE);
GPIO_StructInit(&GPIO_InitStructure);
// 2. 配置 PA10 (RX) 为复用推挽输出
GPIO_InitStructure.GPIO_Pin = usart_tx_pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //发送引脚必须是输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); //103 芯片用PinRemapConfig 替代PinAFConfig
GPIO_Init(usart_tx_port, &GPIO_InitStructure);

// 1. 开启时钟
RCC_APB2PeriphClockCmd(usart_rx_rcu, ENABLE);
GPIO_StructInit(&GPIO_InitStructure);
// 2. 配置 PA10 (RX) 为浮空输入 (IN_FLOATING)
GPIO_InitStructure.GPIO_Pin = usart_rx_pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // 接收引脚必须是输入 GPIO_Mode_IN_FLOATING
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); //103 芯片用PinRemapConfig 替代PinAFConfig
GPIO_Init(usart_rx_port, &GPIO_InitStructure);

//串口初始化
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
USART_DeInit(usart);
USART_InitTypeDef param;
USART_StructInit(&param); //here give all default value to struct
param.USART_BaudRate = usart_param_baudrate;
USART_Init(usart, &param);



//通过中断进行接收
//接收中断配置
NVIC_InitTypeDef nvic;
nvic.NVIC_IRQChannel = usart_irq;
nvic.NVIC_IRQChannelPreemptionPriority = 2;
nvic.NVIC_IRQChannelSubPriority = 2;
nvic.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvic);

//开启中断
USART_ITConfig(usart, USART_IT_RXNE, ENABLE);
USART_ITConfig(usart, USART_IT_IDLE, ENABLE);

USART_Cmd(usart, ENABLE); //ENABLE Usart
}

posted @ 2026-08-07 17:15  2022——new_start  阅读(6)  评论(0)    收藏  举报