UART1_ByteTrigCfg(UART_1BYTE_TRIG);
UART1_INTCfg(ENABLE,RB_IER_RECV_RDY);
UART1_INTCfg(ENABLE,RB_IER_THR_EMPTY);
PFIC_EnableIRQ(UART1_IRQn);
串口如上配置,死活發(fā)送和接收中斷都進(jìn)不了,例子里面全是查詢方式和阻塞發(fā)送不實(shí)用啊。? ?
UART1_ByteTrigCfg(UART_1BYTE_TRIG);
UART1_INTCfg(ENABLE,RB_IER_RECV_RDY);
UART1_INTCfg(ENABLE,RB_IER_THR_EMPTY);
PFIC_EnableIRQ(UART1_IRQn);
串口如上配置,死活發(fā)送和接收中斷都進(jìn)不了,例子里面全是查詢方式和阻塞發(fā)送不實(shí)用啊。? ?
??? /* 配置串口1:先配置IO口模式,再配置串口 */
??? GPIOA_SetBits(GPIO_Pin_9);
??? GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);????? // RXD-配置上拉輸入
??? GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-配置推挽輸出,注意先讓IO口輸出高電平
??? UART1_DefInit();
??? UART1_ByteTrigCfg(UART_7BYTE_TRIG);
??? trigB = 7;
??? UART1_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
??? PFIC_EnableIRQ(UART1_IRQn);
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void UART1_IRQHandler(void)
{
??? volatile uint8_t i;
??? switch(UART1_GetITFlag())
??? {
??????? case UART_II_LINE_STAT: // 線路狀態(tài)錯(cuò)誤
??????? {
??????????? UART1_GetLinSTA();
??????????? break;
??????? }
??????? case UART_II_RECV_RDY: // 數(shù)據(jù)達(dá)到設(shè)置觸發(fā)點(diǎn)
??????????? for(i = 0; i != trigB; i++)
??????????? {
??????????????? RxBuff[i] = UART1_RecvByte();
??????????????? UART1_SendByte(RxBuff[i]);
??????????? }
??????????? break;
??????? case UART_II_RECV_TOUT: // 接收超時(shí),暫時(shí)一幀數(shù)據(jù)接收完成
??????????? i = UART1_RecvString(RxBuff);
??????????? UART1_SendString(RxBuff, i);
??????????? break;
??????? case UART_II_THR_EMPTY: // 發(fā)送緩存區(qū)空,可繼續(xù)發(fā)送
??????????? break;
??????? case UART_II_MODEM_CHG: // 只支持串口0
??????????? break;
??????? default:
??????????? break;
??? }
}
請(qǐng)問解決了嗎,我現(xiàn)在也被堵塞住了
CH573是提供了串口例程參考的,可以直接使用進(jìn)行驗(yàn)證。
如使用默認(rèn)程序出現(xiàn)問題,可具體描述一下,我們這里會(huì)進(jìn)行檢查。
你好,我想做不帶緩存配置的發(fā)送和接收,有案例嗎