常见问答

常见问答

使用NuMicro_ISP_Programming_Tool的UART功能做ISP更新时,该如何更换UART PORT?  日期:2018-11-27

使用NuMicro_ISP_Programming_Tool的UART功能做ISP更新时,若要更改UART的Port,需要做三个步骤。

 

1. 在targetdev.h中,找到define的地方,将UART的PORT以及中断服务程序的名称更改为目标PORT的名称。

(不同IC,中断服务程序的名称可能会稍微有点差异,请参考中断向量表)

2. 在main.c中,找到SYS_Init()函数,里面对于UART做了Clock设置,将原本的UART PORT设置改成对目标UART PORT设置即可

3. 在main.c中,找到SYS_Init()函数,最底下会有对于UART的MFP设定,将MFP更改成目标PORT的MFP即可

(1) /* Set PD multi-function pins for UART0 RXD(PD.0) and TXD(PD.1) */

 

举例说明 : 将NUC126 ISP更新的UART PORT由UART0更改为UART1

 

步骤1 更改PORT Define (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的Clock设定 (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. 不同IC的UART Clock设置可能略有差异,可以参考BSP中的Sample Code或是查看TRM中的Clock章节

 

步骤3 修改MFP至目标PORT (main.c)

修改前

/* Set PD multi-function pins for UART0 RXD(PD.0) and TXD(PD.1) */

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;

修改后

/* Set PD multi-function pins for UART0 RXD(PE.9) and TXD(PE.8) */

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;

产品: 微控制器 ,8 位 8051 微控制器 ,Arm Cortex-M0 微控制器 ,Arm Cortex-M23 微控制器 ,Arm Cortex-M4 微控制器
应用:
功能: Software and Tools,Nu Tools,In System Programming (ISP) Tool