STM第三天之:“复用重映射大师”

前面学习STM32的时候已经学习了怎么点亮一个LED灯,接下来就开始学习复用重映射。

要想学习复用重映射,首先就得先知道,什么是复用,什么是重映射。

复用:是指一个引脚能够用于多个不同的功能,为了优化64脚或100脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上

重映射:是指一个功能可以通过多个引脚去实现

由此可见,复用和重映射是为了解决我们引脚需求的功能,既然复用和重映射如此重要,那么我们怎么知道某些引脚对应哪些复用功能呢?

这里就需要一个非常重要的东西了——数据手册。

此处以PB4为例子。

因为是举例,所以将所有的函数都写在了主函数里面

main函数

void delay(uint32_t count)
{
  int i;
  while (count--) {
	for (i = 0; i < 1000; i++) {}
  }
}




int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
	GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOB,&GPIO_InitStructure);
	
	LED_Init();
	
	
  while (1)
  {
	GPIO_SetBits(GPIOB, GPIO_Pin_4);
		delay(5000);
	GPIO_ResetBits(GPIOB, GPIO_Pin_4);
		delay(5000);
  }
}

这里有几个函数需要解释一下

GPIO_PinRemapConfig函数:该函数的作用是引脚复用,此处我们需要映射的引脚是PB4所以,得找到PB4的复用重映射之前的功能。

由图可知,要想PB4可用的话,需要对SWJ进行操作,根据查询头文件得知,需要完全swj但是没有jntrst的参数是GPIO_Remap_SWJ_NoJTRST,对此使能表示开启IO口的复用重映射功能。

开启之后,我们要对对应的IO口进行操作,即PB4,设置其对应的速度,模式,最后初始化引脚。

复用重映射完成之后,怎么样才能够测试呢,这时候就需要使用debug来测了。

通过这里进去debug

点击进去调出波形图窗口,设置对应的参数即可查看IO口的电平变换。

由函数逻辑可以看出来,PB4的电平变化是5000一次变化,注意这里的延时是不精确的延时,所以这个5000既不是毫秒也不是微秒,后续的文章会和大家一起学习精确定时的操作。

从仿真的情况来看,整个debug的图像和我们预想的一模一样,说明这次的复用重映射功能成功了。这就是整个复用重映射的操作。

最后再来梳理一遍步骤

1、定义GPIO结构体

2、使用复用时钟

3、使能IO口复用重映射

4、设置复用重映射后的IO口

5、使用IO口

总体步骤如上,学习到这里,就是“复用重映射大师”了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值