|
我使用STM32F103RCT6,将串口1Remap到PB6 PB7 ,发现串口1 中断接收没有问题,但是调用发送函数不能发出数据
初始化代码如下:
- GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
- /* Configure PB.6 (UART1_TXD) as AF OD ---------------------------*/
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- /* Configure PB.7 (UART1_RXD) as AF -------------------------*/
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
- GPIO_Init(GPIOB , &GPIO_InitStructure);
-
- USART_InitStruct.USART_BaudRate = 19200;
- USART_InitStruct.USART_WordLength = USART_WordLength_8b;
- USART_InitStruct.USART_StopBits = USART_StopBits_1;
- USART_InitStruct.USART_Parity = USART_Parity_No;
- USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
- USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
- /* Configure UART1 */
- USART_Init(USART1, &USART_InitStruct);
- /* Enable USART1 Receive and Transmit interrupts */
- USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
- /* Enable the USART1 */
- USART_Cmd(USART1, ENABLE);
复制代码
时钟设置如下:
-
- RCC_APB1PeriphClockCmd(
- RCC_APB1Periph_TIM2|
- RCC_APB1Periph_TIM3|
- RCC_APB1Periph_SPI2|
- RCC_APB1Periph_I2C1|
- RCC_APB1Periph_USART2|
- RCC_APB1Periph_USART3,
- ENABLE);
-
- RCC_APB2PeriphClockCmd(
- RCC_APB2Periph_GPIOA |
- RCC_APB2Periph_GPIOB |
- RCC_APB2Periph_GPIOC |
- RCC_APB2Periph_GPIOD |
- RCC_APB2Periph_AFIO |
- RCC_APB2Periph_ADC1 |
- RCC_APB2Periph_USART1,
- ENABLE);
复制代码
中断向量配置:
-
- //Enable USART1 Interrupt
- NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
复制代码
发送函数:
- int Uart1PutByte(char byData)
- {
- while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
- USART_SendData(USART1, byData);
- }
复制代码
中断接收:
- void USART1_IRQHandler()
- {
- int State = USART1->SR;
-
- if((State & USART_IT_RXNE) ||
- (State & USART_IT_ORE))
- {
- sData = USART1->DR;
- }
- }
复制代码
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|