EFR32 串口中断初始化相关问题;
大家好,我最近使用silicon lab的蓝牙芯片EFR32BG22的时候想自己初始化一下串口接收中断,但是我按照例程上逻辑编写,串口一直未使能,不知道出来什么问题,如下是我初始化的代码;
void USART1_Init(void)
{
USART_InitAsync_TypeDef *init;
USART_TypeDef *usart=SL_IOSTREAM_USART_VCOM_PERIPHERAL;
CMU_ClockEnable(cmuClock_GPIO, true);
// Configure TX and RX GPIOs
GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT,SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModePushPull, 1);
GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_RX_PORT,SL_IOSTREAM_USART_VCOM_RX_PIN, gpioModeInputPull, 1);
CMU_ClockEnable(cmuClock_USART1, true);
// Configure USART for basic async operation
init->enable = usartDisable;
USART_InitAsync(usart, init);
// Enable pins at correct USART/USART location
GPIO->USARTROUTE[SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO].ROUTEEN = GPIO_USART_ROUTEEN_TXPEN | GPIO_USART_ROUTEEN_RXPEN;
GPIO->USARTROUTE[SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO].TXROUTE = (SL_IOSTREAM_USART_VCOM_TX_PORT << _GPIO_USART_TXROUTE_PORT_SHIFT)
| (SL_IOSTREAM_USART_VCOM_TX_PIN << _GPIO_USART_TXROUTE_PIN_SHIFT);
GPIO->USARTROUTE[SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO].RXROUTE = (SL_IOSTREAM_USART_VCOM_RX_PORT << _GPIO_USART_RXROUTE_PORT_SHIFT)
| (SL_IOSTREAM_USART_VCOM_RX_PIN << _GPIO_USART_RXROUTE_PIN_SHIFT);
// Enable RX interrupts
USART_IntEnable(usart, USART_IF_RXDATAV);
NVIC_EnableIRQ(USART1_TX_IRQn);
// Finally enable it
USART_Enable(usart, usartEnable);
}
感觉网上的很多例程上的底层定义和我使用的差很多,所以我参考的是例程写法,但是我使用例程直接修改的代码就一切正常,接收发送中断都能进入,不知道自己的和他差在哪,对比了很久。想说有没有大手子教一下,谢谢