stm32的afio初始化代码_关于 STM32 复用重映射和调试I/O配置寄存器(AFIO_MAPR) 的库函数看不太懂,希望大侠能每一句都注释…...

有官方库函数就更好了…………代码如下:************************************************voidGPIO_PinRemapConfig(uint32_tGPIO_Remap,FunctionalStateNewState){uint32_ttmp=0x00...

有官方库函数就更好了…………

代码如下:

************************************************

void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)

{

uint32_t tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;

/* Check the parameters */

assert_param(IS_GPIO_REMAP(GPIO_Remap));

assert_param(IS_FUNCTIONAL_STATE(NewState));

tmpreg = AFIO->MAPR;

tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;

tmp = GPIO_Remap & LSB_MASK;

if ((GPIO_Remap & (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) == (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK))

{

tmpreg &= DBGAFR_SWJCFG_MASK;

AFIO->MAPR &= DBGAFR_SWJCFG_MASK;

}

else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)

{

tmp1 = ((uint32_t)0x03) << tmpmask;

tmpreg &= ~tmp1;

tmpreg |= ~DBGAFR_SWJCFG_MASK;

}

else

{

tmpreg &= ~(tmp << ((GPIO_Remap >> 0x15)*0x10));

tmpreg |= ~DBGAFR_SWJCFG_MASK;

}

if (NewState != DISABLE)

{

tmpreg |= (tmp << ((GPIO_Remap >> 0x15)*0x10));

}

AFIO->MAPR = tmpreg;

}

还有一些宏定义………那位高手能帮小弟QQ解答一下,,如果解答正确再加悬赏

展开

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值