在线时间0 小时
UID3137089
注册时间2018-6-25
NXP金币0
该用户从未签到
新手上路

- 积分
- 8
- 最后登录
- 2019-9-11
|
RT1052 发送中断打开后,就一直停留在发送中断里,别的程序跟本不运行,搞了两天了,一直没解决,请指点,谢谢
接收中断很正常
程序跑的是 UCOS 3
//初始化 bound:波特率
void LPUART5_Init(u32 bound)
{
u32 freq=0; //串口的时钟源频率
CLOCK_EnableClock(kCLOCK_Lpuart5); //使能LPUART5时钟
CLOCK_SetMux(kCLOCK_UartMux,0); //设置UART时钟源为PLL3 80Mhz,PLL3/6=480/6=80MHz
CLOCK_SetDiv(kCLOCK_UartDiv,0); //设置UART时钟1分频,即UART时钟为80Mhz
//LPUART5所使用的IO功能配置,即:从ALT0~ALT7选择合适的功能。
IOMUXC_SetPinMux(IOMUXC_GPIO_B1_12_LPUART5_TX,0U); //GPIO_AD_B0_12设置为LPUART5_TX
IOMUXC_SetPinMux(IOMUXC_GPIO_B1_13_LPUART5_RX,0U); //GPIO_AD_B0_13设置为LPUART5_RX
//配置IO引脚GPIO_AD_B0_12和GPIO_AD_B0_13的功能
//低转换速度,驱动能力为R0/6,速度为100Mhz,关闭开路功能,使能pull/keepr
//选择keeper功能,下拉100K Ohm,关闭Hyst
IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_12_LPUART5_TX,0x10B0u);
IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_13_LPUART5_RX,0x10B0u);
freq=LPUART_SrcFreqGet();
LPUART_GetDefaultConfig(&lpuart5_config); //先设置为默认配置,后面在根据实际情况配置
//初始化NXP官方提供的debug console,此函数会重新初始化LPUART5,但是我们后面会
//重新显示的初始化一次LPUART5,DbgConsole_Init()主要是给那些想要使用NXP官方
//调试功能的开发者使用的,不需要使用的话就可以将下面代码注释掉
DbgConsole_Init(BOARD_DEBUG_UART_BASEADDR,bound,BOARD_DEBUG_UART_TYPE,freq);
lpuart5_config.baudRate_Bps=bound; //波特率
lpuart5_config.dataBitsCount=kLPUART_EightDataBits; //8位
lpuart5_config.stopBitCount=kLPUART_OneStopBit; //1位停止位
lpuart5_config.parityMode=kLPUART_ParityDisabled; //无奇偶校验
lpuart5_config.enableRx=true; //使能接收
lpuart5_config.enableTx=true; //使能发送
LPUART_Init(LPUART5,&lpuart5_config,freq); //初始化LPUART5
//LPUART中断设置
LPUART_EnableInterrupts(LPUART5,
kLPUART_RxDataRegFullInterruptEnable|kLPUART_TransmissionCompleteInterruptEnable
); //使能接收与发送中断
RT1052_NVIC_SetPriority(LPUART5_IRQn,5,0); //抢占优先级5,子优先级0
EnableIRQ(LPUART5_IRQn); //使能LPUART5中断
}
//中断入口
void LPUART5_IRQHandler(void)
{
u8 res=0;
OSIntEnter();
if((LPUART5->STAT)&kLPUART_RxDataRegFullFlag) //接收中断
{
LPUART_ClearStatusFlags(LPUART5,kLPUART_RxDataRegFullFlag);
rxd_fun(LPUART5->DATA);//读取数据
}
if((LPUART5->STAT)&kLPUART_TransmissionCompleteFlag) //发送中断
{
LPUART_ClearStatusFlags(LPUART5,kLPUART_TransmissionCompleteFlag);
//LPUART5->DATA; //读取数据
//txd_fun();
}
OSIntExit();
__DSB(); //数据同步屏蔽指令
}
|
|