1.步骤
移植江科大的TIM2的外部ETR程序到Stm32f407上,PA0作为TIM2的外部ETR引脚,当传感器/PA0按键按下时,会有电平跳变。跳变一次,OLED显示的CNT加一次,跳变10次,OLED显示的NUM加1。配置F4的区别在于:
1是GPIO时钟:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//打开TIM2挂载的APB1时钟
2是端口配置,这里需要把PA0变为复用模式,推挽或浮空输入都可以:
GPIO_Init_Structure.GPIO_Mode=GPIO_Mode_AF;
GPIO_Init_Structure.GPIO_Pin=GPIO_Pin_0;
GPIO_Init_Structure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_Init_Structure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_Init_Structure);
3是让PA0复用到TIM2的这个引脚上:
GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM2);
其它的关于TIM、NVIC以及中断函数的初始化都没变化,不需要修改。 这样,就能够顺利进入到中断。其中,对于选择外部时钟源的这个函数的第二个参数:TIM_ExtTRGPSC_OFF,两分频即为PA0端口跳变两次才进入一次中断。
//选择外部引脚时钟源
TIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0X0F);
链接:https://pan.baidu.com/s/1cIvlm-RR5SKriI8Fsz1TPQ?pwd=dzzh 提取码:dzzh
2.端口映射与端口复用的区别
2.1端口复用 (Port Remapping)
端口复用是指将一个外设的多个功能(如定时器、USART、SPI等)映射到不同的GPIO引脚上。这样,同一个外设的功能可以根据需要被分配到不同的引脚上,从而增加了系统的灵活性。
端口复用的特点:
-
可配置性:用户可以在软件中选择将某个外设的功能映射到哪个GPIO引脚。
-
灵活性:同一外设的功能可以灵活地分配到不同的引脚上,这有助于简化电路板布局并提高资源利用率。
-
配置复杂度:由于需要在软件中进行配置,这可能会增加一些额外的复杂度。
示例:
假设STM32F407有一个USART1外设,它可以被配置为使用PA9/PA10或PB6/PB7作为TX/RX引脚。这种配置就是端口复用的一个例子。
2.2映射 (Mapping)
映射通常指的是将一个功能与特定的GPIO引脚关联的过程。在嵌入式系统中,这通常是指将外设的某个功能固定地连接到某个GPIO引脚上。
映射的特点:
-
固定性:映射通常是固定的,即一个外设功能总是连接到相同的GPIO引脚。
-
简单性:映射关系通常是预先定义好的,不需要在软件中进行配置。
-
易用性:由于映射关系简单明了,这使得硬件设计和软件开发更加容易。
示例:
如果STM32F407的USART1总是使用PA9作为TX引脚和PA10作为RX引脚,那么这就属于映射的例子。
2.3区别
- 配置方式:端口复用通常需要在软件中配置,而映射则是硬件上的固定连接。
- 灵活性:端口复用提供了更多的灵活性,因为它允许用户在不同的引脚之间切换外设的功能;而映射则通常不提供这种灵活性。
- 应用场景:端口复用适用于需要灵活配置的场合,而映射则适用于那些功能和引脚连接不需要更改的场合。