使用NuMicro_ISP_Programming_Tool的UART功能进行ISP更新时,更改UART端口需要三个步骤。
1. 在targetdev.h中,找到define,将UART端口和中断子例程的名称更改为目标PORT的名称
(对于不同的芯片,中断子程序的名称可能略有不同,请参考中断向量表。
2. 在main.c中找到SYS_Init(),里面有UART的时钟设置,将原来的UART PORT设置改为目标UART PORT设置。
3. 在main.c中,找到SYS_Init();底部有 UART 的 MFP 设置;将 MFP 更改为目标 PORT 的 MFP。
(1) /* 设置 UART0 RXD(PD.0) 和 TXD(PD.1) 的 PD 多功能引脚 */
例如:将 NUC126 ISP 更新的 UART 端口从 UART0 更改为 UART1
步骤 1 更改 PORT 定义 (targetdev.h)
更改前
#define UART_T UART0
#define UART_T_IRQHandler UART02_IRQHandler
#define UART_T_IRQn UART02_IRQn
变化后
#define UART_T UART1
#define UART_T_IRQHandler UART1_IRQHandler
#define UART_T_IRQn UART1_IRQn
步骤2 更改UART PORT(main.c)的时钟设置
更改前
CLK->APBCLK0 |= CLK_APBCLK0_UART0CKEN_Msk;
CLK->CLKSEL1 = (CLK->CLKSEL1 & (~CLK_CLKSEL1_UARTSEL_Msk)) | CLK_CLKSEL1_UARTSEL_HIRC;
CLK->CLKDIV0 = (CLK->CLKDIV0 & (~CLK_CLKDIV0_UARTDIV_Msk)) | CLK_CLKDIV0_UART(1);
变化后
CLK->APBCLK0 |= CLK_APBCLK0_UART1CKEN_Msk;
CLK->CLKSEL1 = (CLK->CLKSEL1 & (~CLK_CLKSEL1_UARTSEL_Msk)) | CLK_CLKSEL1_UARTSEL_HIRC;
CLK->CLKDIV0 = (CLK->CLKDIV0 & (~CLK_CLKDIV0_UARTDIV_Msk)) | CLK_CLKDIV0_UART(1);
PS 不同芯片的 UART 时钟设置可能略有不同。请参阅 BSP 中的示例代码或技术参考手册中的时钟章节。
步骤 3 将 MFP 更改为目标端口 (main.c)
更改前
/* 设置 UART0 RXD(PD.0) 和 TXD(PD.1) 的 PD 多功能引脚 */
SYS->GPD_MFPL = (SYS->GPD_MFPL & (~SYS_GPD_MFPL_PD0MFP_Msk)) | SYS_GPD_MFPL_PD0MFP_UART0_RXD;
SYS->GPD_MFPL = (SYS->GPD_MFPL & (~SYS_GPD_MFPL_PD1MFP_Msk)) | SYS_GPD_MFPL_PD1MFP_UART0_TXD;
变化后
/* 为 UART0 RXD(PE.9) 和 TXD(PE.8) 设置 PD 多功能引脚 */
SYS->GPE_MFPH = (SYS->GPE_MFPH & (~SYS_GPE_MFPH_PE9MFP_Msk)) | SYS_GPE_MFPH_PE9MFP_UART1_RXD;
SYS->GPE_MFPH = (SYS->GPE_MFPH & (~SYS_GPE_MFPH_PE8MFP_Msk)) | SYS_GPE_MFPH_PE8MFP_UART1_TXD;
使用NuMicro_ISP_Programming_Tool的UART功能进行ISP更新时,更改UART端口需要三个步骤。
1. 在targetdev.h中,找到define,将UART端口和中断子例程的名称更改为目标PORT的名称
(对于不同的芯片,中断子程序的名称可能略有不同,请参考中断向量表。
2. 在main.c中找到SYS_Init(),里面有UART的时钟设置,将原来的UART PORT设置改为目标UART PORT设置。
3. 在main.c中,找到SYS_Init();底部有 UART 的 MFP 设置;将 MFP 更改为目标 PORT 的 MFP。
(1) /* 设置 UART0 RXD(PD.0) 和 TXD(PD.1) 的 PD 多功能引脚 */
例如:将 NUC126 ISP 更新的 UART 端口从 UART0 更改为 UART1
步骤 1 更改 PORT 定义 (targetdev.h)
更改前
#define UART_T UART0
#define UART_T_IRQHandler UART02_IRQHandler
#define UART_T_IRQn UART02_IRQn
变化后
#define UART_T UART1
#define UART_T_IRQHandler UART1_IRQHandler
#define UART_T_IRQn UART1_IRQn
步骤2 更改UART PORT(main.c)的时钟设置
更改前
CLK->APBCLK0 |= CLK_APBCLK0_UART0CKEN_Msk;
CLK->CLKSEL1 = (CLK->CLKSEL1 & (~CLK_CLKSEL1_UARTSEL_Msk)) | CLK_CLKSEL1_UARTSEL_HIRC;
CLK->CLKDIV0 = (CLK->CLKDIV0 & (~CLK_CLKDIV0_UARTDIV_Msk)) | CLK_CLKDIV0_UART(1);
变化后
CLK->APBCLK0 |= CLK_APBCLK0_UART1CKEN_Msk;
CLK->CLKSEL1 = (CLK->CLKSEL1 & (~CLK_CLKSEL1_UARTSEL_Msk)) | CLK_CLKSEL1_UARTSEL_HIRC;
CLK->CLKDIV0 = (CLK->CLKDIV0 & (~CLK_CLKDIV0_UARTDIV_Msk)) | CLK_CLKDIV0_UART(1);
PS 不同芯片的 UART 时钟设置可能略有不同。请参阅 BSP 中的示例代码或技术参考手册中的时钟章节。
步骤 3 将 MFP 更改为目标端口 (main.c)
更改前
/* 设置 UART0 RXD(PD.0) 和 TXD(PD.1) 的 PD 多功能引脚 */
SYS->GPD_MFPL = (SYS->GPD_MFPL & (~SYS_GPD_MFPL_PD0MFP_Msk)) | SYS_GPD_MFPL_PD0MFP_UART0_RXD;
SYS->GPD_MFPL = (SYS->GPD_MFPL & (~SYS_GPD_MFPL_PD1MFP_Msk)) | SYS_GPD_MFPL_PD1MFP_UART0_TXD;
变化后
/* 为 UART0 RXD(PE.9) 和 TXD(PE.8) 设置 PD 多功能引脚 */
SYS->GPE_MFPH = (SYS->GPE_MFPH & (~SYS_GPE_MFPH_PE9MFP_Msk)) | SYS_GPE_MFPH_PE9MFP_UART1_RXD;
SYS->GPE_MFPH = (SYS->GPE_MFPH & (~SYS_GPE_MFPH_PE8MFP_Msk)) | SYS_GPE_MFPH_PE8MFP_UART1_TXD;
举报