ch32v307使用串口4中斷方式讀取GPS數(shù)據(jù)亂碼。
聲明:
//void?USART4_IRQHandler(void)?__attribute__((interrupt()));?//?串口4不工作 void?UART4_IRQHandler(void)?__attribute__((interrupt("WCH-Interrupt-fast")));
初始化:
void?uart4_init(void) { ????GPIO_InitTypeDef??GPIO_InitStructure?=?{0}; ????USART_InitTypeDef?USART_InitStructure?=?{0}; ????NVIC_InitTypeDef??NVIC_InitStructure?=?{0}; ????RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB?|?RCC_APB2Periph_AFIO,?ENABLE); ????RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,?ENABLE); ????USART_DeInit(UART4); ????/*?UART4?TX-->B.1??RX-->B.0?*/ ????GPIO_PinRemapConfig(GPIO_PartialRemap_USART4,?ENABLE); ????GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_1; ????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz; ????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AF_PP; ????GPIO_Init(GPIOB,?&GPIO_InitStructure); ????GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_0; ????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_IN_FLOATING; ????GPIO_Init(GPIOB,?&GPIO_InitStructure); ????USART_InitStructure.USART_BaudRate?=?115200; ????USART_InitStructure.USART_WordLength?=?USART_WordLength_8b; ????USART_InitStructure.USART_StopBits?=?USART_StopBits_1; ????USART_InitStructure.USART_Parity?=?USART_Parity_No; ????USART_InitStructure.USART_HardwareFlowControl?=?USART_HardwareFlowControl_None; ????USART_InitStructure.USART_Mode?=?USART_Mode_Tx?|?USART_Mode_Rx; ????USART_Init(UART4,?&USART_InitStructure); ????USART_ITConfig(UART4,?USART_IT_RXNE,?ENABLE); ????NVIC_InitStructure.NVIC_IRQChannel?=?UART4_IRQn; ????NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority?=?2;?//?搶占優(yōu)先級 ????NVIC_InitStructure.NVIC_IRQChannelSubPriority?=?3;?//?子優(yōu)先級 ????NVIC_InitStructure.NVIC_IRQChannelCmd?=?ENABLE; ????NVIC_Init(&NVIC_InitStructure); ????USART_Cmd(UART4,?ENABLE); }
中斷處理函數(shù):
void?UART4_IRQHandler(void) { ????//u8?recv_buf;?//?存儲接收的內(nèi)容 ????if(USART_GetITStatus(UART4,?USART_IT_RXNE)?!=?RESET) ????{ ????????USART_ClearITPendingBit(UART4,?USART_IT_RXNE);?//?清除中斷標(biāo)志 ????????u8?recv_buf?=?USART_ReceiveData(UART4);???//?存儲接收內(nèi)容 ????????printf("%c(%d)?",?recv_buf,?recv_buf); ????} }
打印出的GPS數(shù)據(jù):
y(121)??(189)??(221)?=(61)??(157)??(155)??(159)??(167)??(157)?}(125)?g(103)?W(87)?[(91)??(143)??(157)??(171)??(149)??(235)??(183)?w(119)?O(79)??(167)??(155)??(159)??(159)??(167)?c(99)?A(65)?_(95)?c(99)?w(119)??(167)?}(125)??(235)?{(123)?q(113)?}(125)??(159)??(145)??(145)??(153)??(147)??(167)??(167)??(167)??(159)??(167)?e(101)??(167)??(167)??(147)??(229)??(183)?w(119)?e(101)??(167)??(151)??(157)??(163)??(141)??(167)??(167)??(167)??(167)??(155)??(159)??(155)??(167)??(157)?u(117)?c(99)?S(83)??(151)??(229)?(0)??(219)??(221)??(197)??(157)??(159)??(145)??(145)??(143)??(147)??(167)??(167)??(167)??(159)??(167)?e(101)??(167)??(167)??(147)??(229)??(183)?w(119)?e(101)??(159)??(151)??(157)??(163)??(141)??(167)
已確定GPS波特率為115200,串口4的PB0和PB1引腳初始化時交換也為相同亂碼。
目前看來串口4一直沒有正常工作。
熱門產(chǎn)品 :
CH397: 高集成度、低功耗USB網(wǎng)卡芯片