在线时间9 小时
UID3429446
注册时间2018-7-25
NXP金币0
TA的每日心情 | 慵懒 2019-1-10 10:41 |
---|
签到天数: 11 天 连续签到: 1 天 [LV.3]偶尔看看II
注册会员

- 积分
- 97
- 最后登录
- 2020-3-4
|
宏定义
#define BOARD_RADIO_UART_BASEADDR UART4
#define BOARD_RADIO_UART_BAUDRATE 38400
#define BOARD_RADIO_UART_CLKSRC kCLOCK_CoreSysClk//kCLOCK_BusClk
#define BOARD_RADIO_UART_CLK_FREQ CLOCK_GetBusClkFreq()
#define BOARD_RADIO_UART_IRQ UART4_RX_TX_IRQn
#define BOARD_RADIO_UART_IRQ_HANDLER UART4_RX_TX_IRQHandler
引脚配置:
void BOARD_InitPins(void)
{
CLOCK_EnableClock(kCLOCK_PortB); //PORTB 时钟使能
CLOCK_EnableClock(kCLOCK_PortC);
/*Set Uart0 Pin Mux*/
PORT_SetPinMux(PORTB, UART0_PIN_TX, kPORT_MuxAlt3);
PORT_SetPinMux(PORTB, UART0_PIN_RX, kPORT_MuxAlt3);
/*Set Uart4 Pin Mux*/
PORT_SetPinMux(PORTC, UART4_PIN_TX, kPORT_MuxAlt3);
PORT_SetPinMux(PORTC, UART4_PIN_RX, kPORT_MuxAlt3);
}
串口初始化:void BOARD_InitRadioUart4(void){
uart_config_t uartconfig;
UART_GetDefaultConfig(&uartconfig); //获取默认配置
uartconfig.baudRate_Bps=BOARD_RADIO_UART_BAUDRATE;
uartconfig.enableRx=true;
uartconfig.enableTx=true;
UART_Init(BOARD_RADIO_UART_BASEADDR,&uartconfig, BOARD_RADIO_UART_CLK_FREQ);
BOARD_RADIO_UART_BASEADDR->C1|=UART_C1_ILT_MASK; //空闲状态计数设置
UART_EnableInterrupts(BOARD_RADIO_UART_BASEADDR, kUART_RxDataRegFullInterruptEnable|kUART_RxOverrunInterruptEnable|kUART_IdleLineInterruptEnable); //使能UART4接收中断
EnableIRQ(BOARD_RADIO_UART_IRQ); //使能UART4的中断处理函数
}
中断处理函数
void BOARD_RADIO_UART_IRQ_HANDLER(void) //电台的通信波特率为38400
{
uint8_t tempdata;
if(UART_GetStatusFlags(BOARD_RADIO_UART_BASEADDR)&kUART_IdleLineFlag)
{
Get_GPS_Cache_FinishedFlag=true; //接受电台数据完成
GPS_Cache_RxByteCounte_temp=GPS_Cache_RxByteCounte;
GPS_Cache_RxByteCounte=0u;
if(UART_ClearStatusFlags(BOARD_RADIO_UART_BASEADDR,kUART_IdleLineFlag)==kStatus_Success) //清中断标志位
{
PUTCHAR('a');
}
}
/*Receive data*/
if(UART_GetStatusFlags(BOARD_RADIO_UART_BASEADDR)&(kUART_RxDataRegFullFlag|kUART_RxOverrunFlag))
{
tempdata=UART_ReadByte(BOARD_RADIO_UART_BASEADDR);
PUTCHAR(tempdata);
if(Get_GPS_Cache_FinishedFlag==false)
{
PUTCHAR(tempdata);
GPS_Cache[GPS_Cache_RxByteCounte]=tempdata;
GPS_Cache_RxByteCounte++;
}
UART_ClearStatusFlags(BOARD_RADIO_UART_BASEADDR,kUART_RxOverrunFlag );
}
}
实际测试过程中,通过电台发送过去的数据被k60串口4接收到之后总是每个字节产生一个空闲中断,并通过调试端口串口0输出a;
怎么样才能实现每一帧结束才触发一次空闲中断呢?
最佳答案
执剑丶写春秋 发表于 2018-7-25 18:37
在K60 SDK2.0基础上修改的,实际测试环境一台发射电台通过串口转USB模块接PC,接收电台接K60串口4并通过串 ...
你先介绍一下代码修改的地方,以及测试的步骤,方便我这边可以复 ...
|
|