HC32 GPIO使用注意点

和STM32 的区别

项目STM32HC32
GPIO 输出推挽、开漏CMOS、NMOS
输入浮空 (可配置上下拉)需要配置u16PinDir 上下拉配置u16PullUp
时钟不同端口要先使能不同的时钟所有端口通用一个函数GPIO_Unlock()
速度GPIO_Speed_10MHz GPIO_Speed_2MHz GPIO_Speed_50MHzPIN_DRV_LOW PIN_DRV_MID PIN_DRV_HIGH
等待时间/需要根据主频配置等待时间 GPIO_SetReadWaitCycle
复用功能

使用时注意点

1、在是HC的时候要首先解锁相关寄存器的保护

/**
 * @brief  MCU Peripheral registers write unprotected.
 * @param  None
 * @retval None
 * @note Comment/uncomment each API depending on APP requires.
 */
void Peripheral_WE(void)
{
    /* Unlock GPIO register: PSPCR, PCCR, PINAER, PCRxy */
    GPIO_Unlock();
    /* Unlock PWC register: FCG0 */
    PWC_FCG0_Unlock();
    /* Unlock PWC, CLK, PVD registers, @ref PWC_REG_Write_Unlock_Code for details */
    PWC_Unlock(PWC_UNLOCK_CODE_0 | PWC_UNLOCK_CODE_1);
    /* Unlock SRAM register: WTCR */
    SRAM_WTCR_Unlock();
    /* Unlock SRAM register: CKCR */
    SRAM_CKCR_Unlock();
    /* Unlock all EFM registers */
    EFM_Unlock();
    /* Unlock EFM register: FWMC */
    EFM_FWMC_Unlock();
    /* Unlock EFM OTP write protect registers */
//    EFM_OTP_WP_Unlock();
}

2、注意设置GPIO的 等待时间如果不配置默认上电 001(默认值) 1周期 50~100MHz,当主频设置为240M的时候在读取和设置输出比较频繁的情况下回出现莫名的问题。
3、复用功能 例如两个串口 尽量不要同时使用 Func20,如

switch(usart)
    {
        case USART1:
        {
            // PA9 - TX       PA10 - RX
            GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_09, GPIO_FUNC_20_USART1_TX, PIN_SUBFUNC_DISABLE);
            GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_10, GPIO_FUNC_20_USART1_RX, PIN_SUBFUNC_DISABLE);
        }
        break;
        case USART2:    //原有的2 映射到串口4
        {
            // PA2 - TX       PA3 - RX
            GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_02, GPIO_FUNC_20_USART1_TX, PIN_SUBFUNC_DISABLE);
            GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_03, GPIO_FUNC_20_USART1_TX, PIN_SUBFUNC_DISABLE);
        }
        break;
        default: break;
    }

应更改为

switch(usart)
    {
        case USART1:
        {
            // PA9 - TX       PA10 - RX
            GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_09, GPIO_FUNC_20_USART1_TX, PIN_SUBFUNC_DISABLE);
            GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_10, GPIO_FUNC_20_USART1_RX, PIN_SUBFUNC_DISABLE);
        }
        break;
        case USART2:    //原有的2 映射到串口4
        {
            // PA2 - TX       PA3 - RX
            GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_02, GPIO_FUNC_32_USART4_TX, PIN_SUBFUNC_DISABLE);
            GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_03, GPIO_FUNC_32_USART4_TX, PIN_SUBFUNC_DISABLE);
        }
        break;
        default: break;
    }

同时使用Func20 会出现串口2部分中断异常(具体不知道芯片原因,还是其他的反正更改到funC32 完全正常)。
3、串行通信接口分为三个组。可以根据不同的管脚查询官方的数据手册然后自己配置
在这里插入图片描述
4、使用GPIO_StructInit 后注意默认值,需要更改成自己想要的配置。
5、上电后 TRACE/JTAG对应的管脚默认是调试功能。若果使用普通的GPIO时一定要注意先关闭复用功能。
6、串口下载 和STM32的 串口1不同。需要根据芯片选择对应的管脚。具体参考官网给的《Cortex-M离线编程器Ⅱ用户手册.pdf》或者直接联系FAE。操作不当会锁死芯片。

在这里插入图片描述

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值