NXP MCU 技术论坛
直播中

王英

7年用户 1313经验值
私信 关注
[问答]

MPC5748G-带DMA的LinFlexUART问题求解

我需要UART与DMA传输数据,但是UART初始化有问题。当MCU遇到写寄存器“LINFlexD_1.DMATXE”的代码时,MCU停止工作并抛出异常“No source available for”IVOR1_Vector( ) 在 0x1001010" "。
初始化代码如下:
void initLINFlexD_1 (unsigned int MegaHertz, unsigned int BaudRate)
{
无符号整型分数 = 0;
无符号整数 = 0;
无符号整数 i = 0;
SIUL2.MSCR[PC6].B.SSS = 1; /* Pad PC6:源信号是 LIN1_TX */
SIUL2.MSCR[PC6].B.OBE = 1; /* 垫 PC6:OBE=1。*/
SIUL2.MSCR[PC6].B.SRC = 3; /* Pad PC6:全强度转换率 */
SIUL2.MSCR[PC7].B.IBE = 1; /* Pad PC7:启用输入垫 */
SIUL2.IMCR[201].B.SSS = 1; /* LIN1_RX : 连接到 pad PC9 */
LINFlexD_1.LINCR1.B.INIT = 1; /* 进入初始化模式 */
LINFlexD_1.LINCR1.B.SLEEP = 0; /* 退出睡眠模式 */
而 (0x1000 != (LINFlexD_1.LINSR.R & 0xF000)) {}
LINFlexD_1.UARTCR.B.UART = 1; /* UART 启用,在 UART 配置之前需要 */
LINFlexD_1.UARTCR.B.RxEn = 1;
LINFlexD_1.UARTCR.B.TxEn = 1;
LINFlexD_1.UARTCR.B.WL1 = 0;
LINFlexD_1.UARTCR.B.WL0 = 1;

LINFlexD_1.UARTCR.B.TFBM = 1;
LINFlexD_1.UARTCR.B.RFBM = 1;
LINFlexD_1.DMATXE.R = 0x0000ffff;//这里有问题
LINFlexD_1.DMARXE.R = 0x0000ffff;
LINFlexD_1.LINIER.B.DtiE = 0;
LINFlexD_1.LINIER.B.DRIE = 1;
LINFlexD_1.UARTSR.B.SZF = 1; /* 更改此行清除零状态位 */
LINFlexD_1.UARTSR.B.DRFRFE = 1; /* 更改此行清除 DRFRFE 标志 - W1C */
波特率 = (兆赫兹 * 1000000) / 波特率;
整数 = 波特率 / 16;
分数 = 波特率 - (整数 * 16);
LINFlexD_1.LINIBRR.R = 整数;
LINFlexD_1.LINFBRR.R = 分数;
LINFlexD_1.LINCR1.B.INIT = 0; /* 退出初始化模式 */
INTC.PSR[379].B.PRC_SELN = 0x8; /* IRQ 发送到 Core 0 */
INTC.PSR[379].B.PRIN = 8; /* IRQ 优先级 = 10(15 = 最高)*/
Lin_1_UARTFirstTransmitFlag = 1; /* 表示尚未发生 Tx */
for(i = 0; i < 1000; i++)
{}
}

该项目在附件中。任何人都可以帮助我如何解决这个问题,或者与我分享一些示例代码,谢谢。

更多回帖

发帖
×
20
完善资料,
赚取积分