xiaoqizi 发表于 2025-7-10 12:12

国民技术N32G45X例程之-JTAG口复用GPIO

前言
提示:国民技术N32G45X默认打开JTAG调试口,而相对应的IO要使用GPIO功能,那就要做为复用功能打开,随便说一下国民技术N32G45X库函数没有能正常关闭JTAG调试口。

提示:以下是本篇文章正文内容,下面案例可供参考

一、软件配置方法
1.一般配置方法
代码如下(示例):(库函数可能存在BUG无法关闭JTAG)

        //GPIO_ConfigPinRemap。这个函数有BUG不能关闭JTAG
        GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_DISABLE, ENABLE);
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO | RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_GPIOB, ENABLE);
       
        GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin      = GPIO_PIN_13;      
        GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;      
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
    GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);



2.改进后的配置
代码如下(示例):

        //GPIO_ConfigPinRemap这个函数有BUG不能关闭JTAG
        GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_DISABLE, ENABLE);
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO | RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_GPIOB, ENABLE);
        JTAG_Set(JTAG_SWD_DISABLE);//将调试用的PA13作普通IO口。

       
        GPIO_InitStruct(&GPIO_InitStructure);
    GPIO_InitStructure.Pin      = GPIO_PIN_13;      
        GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;      
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
    GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);


3.关闭JTAG函数
代码如下(示例):

//JTAG模式设置,用于设置JTAG的模式
//mode:jtag,swd模式设置;00,全使能;01,使能SWD;10,全关闭;                  
void JTAG_Set(u8 mode)
{
        u32 temp;
        temp=mode;
        temp<<=25;
        RCC->APB2PCLKEN|=1<<0;   //开启辅助时钟          
        AFIO->RMP_CFG&=0XF8FFFFFF; //清除MAPR的
        AFIO->RMP_CFG|=temp;       //设置jtag模式
}


该处使用的url网络请求的数据。

二、程序下载
3.国民技术N32G45X例程之-JTAG口复用GPIO
https://download.csdn.net/download/suqingxiao/69300113
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/suqingxiao/article/details/122103460

szt1993 发表于 2025-7-31 22:23

JTAG口复用GPIO
页: [1]
查看完整版本: 国民技术N32G45X例程之-JTAG口复用GPIO