STM32F103C8T6外部中断配置-PA0+PA1+PA2

    EXTI_InitTypeDef EXTI_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure; 
     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//打开GPIOA时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//外部中断,需要使能AFIO时钟

	 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
     
       GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
       GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1);
       GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource2);

    EXTI_DeInit();
  	EXTI_InitStructure.EXTI_Line=(EXTI_Line0|EXTI_Line1|EXTI_Line2);  //
  	EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;	
  	EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; 
  	EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  	EXTI_Init(&EXTI_InitStructure);	 	 
        
    NVIC_InitStructure.NVIC_IRQChannel = (EXTI0_IRQChannel);  
  	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x1;	 
  	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;					 
  	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;								 
  	NVIC_Init(&NVIC_InitStructure);  	  

    NVIC_InitStructure.NVIC_IRQChannel = (EXTI1_IRQChannel);  
  	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x1;	 
  	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;					 
  	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;								 
  	NVIC_Init(&NVIC_InitStructure);  	  
  	
    NVIC_InitStructure.NVIC_IRQChannel = (EXTI2_IRQChannel);  
  	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x1;	 
  	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;					 
  	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;								 
  	NVIC_Init(&NVIC_InitStructure);  	  

	    EXTI_ClearFlag(EXTI_Line0);
        EXTI_ClearFlag(EXTI_Line1);
        EXTI_ClearFlag(EXTI_Line2);
### STM32F103C8T6 PA0 配置PA2 的影响 在STM32F103C8T6微控制器中,PA0PA2属于不同的GPIO端口引脚,在硬件设计上相互独立。然而,当涉及到特定功能模块(如定时器、ADC等)时,这些引脚可能会共享某些外设资源或受到相同配置的影响。 对于PWM初始化函数`PWM_Init()`以及设置比较值的函数`PWM_SetCompare2(uint16_t Compare)`[^1],如果这两个函数用于控制TIM2通道,则需要注意: - TIM2_CH1映射到PA0 (复用功能AF1),而TIM2_CH2则可以映射至PA2(AF1)。 因此,当通过上述API配置TIM2作为PWM输出时,针对不同通道的操作不会直接影响其他未被指定的通道;但是,由于它们同属一个定时器实例(TIM2),改变定时器的基础参数(比如预分频系数ARR)会影响到所有关联于此定时器上的PWM信号特性。 具体来说,修改PA0(PWM CH1)的相关参数并不会直接干扰到PA2(PWM CH2)的工作状态,除非是在调整整个定时器全局属性的情况下才会间接引起变化。例如更改计数周期会影响两个通道共同依赖的时间基准。 ```c // 初始化TIM2 PWM模式下的PA0PA2 void TIM2_PWM_Config(void){ GPIO_InitTypeDef GPIO_InitStruct = {0}; TIM_OCInitTypeDef sConfigOC = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_TIM2_CLK_ENABLE(); // 配置PA0为复用推挽输出,连接TIM2_CH1 GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 同样方法配置PA2为TIM2_CH2... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓑衣客VS索尼克

感谢支持原创,感谢原创支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值