CH32V307VCT6 串口調(diào)試回環(huán)測試異常. ---已經(jīng)解決

已經(jīng)解決,需要添加聲明:?void USART1_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));?


各位前輩,現(xiàn)在調(diào)試CH32V307VCT6 串口驅(qū)動回環(huán)測試.

用串口中斷RX接收后TX返回數(shù)據(jù),發(fā)現(xiàn)RX進入中斷接收第一個字符后就停止接收,芯片復(fù)位后還是只能接收RX第一個字符.

串口1和串口2一樣現(xiàn)象,開IDLE也沒有區(qū)別.試過EVT的中斷范例也是一樣只接收第一個字符,嘗試用其他的clear函數(shù)沒作用.

現(xiàn)將測試代碼貼上麻煩幫看下,謝謝!


void USART1_Configuration(void)

{

? ? ? ? NVIC_InitTypeDef NVIC_InitStructure;

? ? ? ? GPIO_InitTypeDef GPIO_InitStructure;

? ? ? ? USART_InitTypeDef USART_InitStructure;

? ? ? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

? ? ? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,? ENABLE);

? ? ? ? //USART1_TX? ?GPIOA.9

? ? ? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

? ? ? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? ? ? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

? ? ? ? GPIO_Init(GPIOA, &GPIO_InitStructure);

? ? ? ? //USART1_RX? ?GPIOA.10初始化

? ? ? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

? ? ? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

? ? ? ? GPIO_Init(GPIOA, &GPIO_InitStructure);

? ? ? ? ?// 配置波特率

? ? ? ? USART_InitStructure.USART_BaudRate = 115200;

? ? ? ? // 配置 針數(shù)據(jù)字長

? ? ? ? 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_Rx | USART_Mode_Tx;

? ? ? ?// 完成串口的初始化配置

? ? ? ? USART_Init(USART1, &USART_InitStructure);

? ? ? ? // 使能串口接收中斷

? ? ? ? USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

? ? ? ? //USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);

? ? ? ? USART_Cmd(USART1, ENABLE);

? ? ? ? // 清除發(fā)送完成標志

? ? ? ? NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

? ? ? ? NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0X06;

? ? ? ? NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0X00;

? ? ? ? NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

? ? ? ? NVIC_Init(&NVIC_InitStructure);


}



void USART1_IRQHandler(void)

{


? ? if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

? ? {

? ? ? ? Res = USART_ReceiveData(USART1);


? ? ? ? USART_ClearITPendingBit(USART1, USART_IT_RXNE);

? ? ? ? USART_SendData(USART1, Res);


? ? }


}



以下是串口助手接收數(shù)據(jù)狀態(tài);

[10:41:12.615]收←◆SystemClk:144000000

USBHS HOST MTP Test

這是一個串口中斷接收回顯實驗


[10:41:15.950]發(fā)→◇3333□

[10:41:15.953]收←◆3

[10:41:17.397]發(fā)→◇3333□

[10:43:06.322]收←◆SystemClk:144000000

USBHS HOST MTP Test

這是一個串口中斷接收回顯實驗


[10:43:09.605]發(fā)→◇3333□

[10:43:09.607]收←◆3

[10:43:10.293]發(fā)→◇3333□

[10:43:10.932]發(fā)→◇3333□

[10:43:11.517]發(fā)→◇3333□


[10:51:16.159]收←◆SystemClk:144000000

USBHS HOST MTP Test

這是一個串口中斷接收回顯實驗


[10:51:22.365]發(fā)→◇123456789□

[10:51:22.367]收←◆1

[10:51:28.973]發(fā)→◇987654321□

[10:51:36.581]發(fā)→◇234567890□

[10:51:45.869]發(fā)→◇3456789012□



熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

之前使用CH32F103直接用STM32F103代碼串口通訊沒有問題.


//串口1中斷和接收

void USART1_IRQHandler(void)

{

? ? if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //一個字符中斷

? ? {

? ? ? ? USART1_REC[REC1_NUM++] = USART1 -> DR ; //儲存一個字符到數(shù)組

? ? }

? ? else if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET)//一段字符中斷

? ? {

? ? ? ? USART1 -> SR? ;?

? ? ? ? USART1 -> DR? ;?

? ? ? ? USART1_STR = 1 ; //段接收完成標示

? ? ? ? if (USART1_REC[0] == 83 && USART1_REC[1] == 84? )? ?//判斷接收數(shù)據(jù)以"ST"開始

? ? ? ? {

? ? ? ? ? ? while((USART1->SR & (1<<7)) == 0 ) ; //判斷串口空閑標志位

? ? ? ? ? ? USART1->DR = 83 ;

? ? ? ? }

? ? ? ? REC1_NUM = 0? ;? ?//接收數(shù)組位歸零

? ? }

}



只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频