大连密封材料 发表于 2026-2-10 10:54:40

04:(尺度库)使用外部制止按键控制LED/编码器计次

有关引脚的外部制止的底子知识请参考主页中的“stm32寄存器开发入门教程的第4章”
1、常见尺度库函数



[*]与AFIO相干的尺度库函数
1.void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
   •功能:设置 GPIO 引脚的复用映射功能,将特定功能重映射到差别的引脚
   •参数:
      •GPIO_Remap:指定要举行映射的 GPIO 引脚功能(比方GPIO_Remap_USART1)。
      •NewState:开启大概关闭(ENABLE or DISABLE)
2.void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
   •功能:选择外部制止线路,指定哪个 GPIO 引脚用作外部制止源。
   •参数:
      •GPIO_PortSource:指定 GPIO 引脚的端口源(比方GPIO_PortSourceGPIOA)。
      •GPIO_PinSource:指定 GPIO 引脚的引脚源(比方GPIO_PinSource0)。


[*]与EXTI相干的尺度库函数
1.void EXTI_DeInit(void)
   •功能:将 EXTI 外部制止线的全部设置规复到默认状态。这意味着外部制止线被禁用,全部相干的设置将被重置。
   •参数:
      无
2.void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
   •功能:设置外部制止的触发方式、模式等。
   •参数:
      •EXTI_InitStruct:指向 EXTI_InitTypeDef 结构体的指针。该结构体用于存储外部制止的设置。
      •EXTI_InitTypeDef结构体:
               EXTI_Line:指定要设置的 EXTI 线路。可以选择差别的制止线(如 EXTI_Line0, EXTI_Line1, …)。
               EXTI_Mode:设置制止线的模式。常见值有:
                      EXTI_Mode_Interrupt::    外部制止触发模式。
                      EXTI_Mode_Event:       外部变乱触发模式。
               EXTI_Trigger:设置制止触发的方式。常见值有:
                      EXTI_Trigger_Rising:      上升沿触发。
                      EXTI_Trigger_Falling:     降落沿触发。
                      EXTI_Trigger_Rising_Falling  上升沿或降落沿都触发。
               EXTI_LineCmd:使能或禁用指定的 EXTI 线路(ENABLE/DISABLE)。
3.void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
   •功能:将 EXTI_InitTypeDef 结构体初始化为默认值。在设置外部制止设置前,先调用此函数初始化结构体,确保结构体的每个字段都设置为安全的默认值。
   •参数:
      •EXTI_InitStruct:指向 EXTI_InitTypeDef 结构体的指针,用于存储设置。
4.void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
   •功能:手动触发软件制止,模仿外部变乱的发生。此函数将指定的 EXTI 线路设置为触发制止状态,步伐可以模仿外部变乱引起的制止。此函数通常用于测试或在步伐内部模仿外部制止,不须要真实的外部信号就能触发制止。
   •参数:
      •EXTI_Line:指定触发制止的 EXTI 线路。可以选择如 EXTI_Line0、EXTI_Line1 等
5.FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
   •功能:获取指定 EXTI 线路的制止标志位状态。如果该制止线路触发了制止(好比上升沿、降落沿),则返回 SET,否则返回 RESET。
   •参数:
      •EXTI_Line:指定要查抄标志的 EXTI 线路。
   •返回值:
      •SET:表现该制止标志被置位,分析该制止线路已经触发。
      •RESET:表现该制止标志未被置位,分析该制止线路没有触发。
6.void EXTI_ClearFlag(uint32_t EXTI_Line);
   •功能:扫除指定 EXTI 线路的制止标志位。这通常在制止服务步伐(ISR)中完成,用于扫除触发过的制止标志,制止制止再次触发。在制止处置惩罚步伐中使用此函数扫除制止标志,以确保制止不会被重复触发。
   •参数:
      •EXTI_Line:指定须要扫除标志的 EXTI 线路
7.ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
   •功能:获取指定 EXTI 线路的制止挂起状态。此状态与制止标志位的状态雷同,表明该制止是否已经挂起。
   •参数:
      •EXTI_Line:指定要查抄制止挂起状态的 EXTI 线路
8.ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
   •功能:扫除指定 EXTI 线路的制止挂起状态。通常在制止服务步伐中调用,以表现该制止已经被处置惩罚,不再须要挂起。
   •参数:
      •EXTI_Line:指定须要扫除挂起位的 EXTI 线路。


[*]与NVIC相干的尺度库函数
1.void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
   •功能:设置制止优先级分组。此函数用于设置制止优先级的分配方式,通常在体系初始化时调用一次。
   •参数:
      •NVIC_PriorityGroup:设置优先级分组的值。该值通常为以下之一:
               NVIC_PriorityGroup_0:全部优先级位用于抢占优先级,没有子优先级位。
               NVIC_PriorityGroup_1:1 位用于子优先级,3 位用于抢占优先级。
               NVIC_PriorityGroup_2:2 位用于子优先级,2 位用于抢占优先级。
               NVIC_PriorityGroup_3:3 位用于子优先级,1 位用于抢占优先级。
               NVIC_PriorityGroup_4:4 位用于子优先级,0 位用于抢占优先级
2.void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
   •功能:初始化并设置一个制止(IRQ)通道的 NVIC 设置,包罗制止优先级、使能或禁用制止等。
   •参数:
      •NVIC_InitStruct:指向 NVIC_InitTypeDef 结构体的指针,用于存储设置参数。
      •NVIC_InitTypeDef结构体:
               NVIC_IRQChannel:指定制止通道(比方 EXTI0_IRQn、EXTI1_IRQn)。
               NVIC_IRQChannelPreemptionPriority:指定抢占优先级,抢占优先级越高,越能打断其他低优先级的制止。取值范围通常为 0 到 15。
               NVIC_IRQChannelSubPriority:指定子优先级。在雷同抢占优先级下,子优先级用来区分制止的处置惩罚次序,取值范围通常为 0 到 15。
               NVIC_IRQChannelCmd:启用或禁用制止(ENABLE/DISABLE)。
2、按键实行

实行1:PB0毗连按键,使用制止控制PA0毗连的LED灯
代码①:
/*
        外部中断按键控制LED,使用外部中断EXTI0进行按键控制LED的亮灭
*/
#include "stm32f10x.h"
int main(void)
{
   
   
        //1.对PB0引脚进行配置,按键连接的引脚
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        GPIO_InitTypeDef GPIOInitStruct;
        GPIOInitStruct.GPIO_Mode = GPIO_Mode_IPU;//上拉输入
        GPIOInitStruct.GPIO_Pin = GPIO_Pin_0;
       
        GPIO_Init(GPIOB,&GPIOInitStruct);
       
        //对PA0进行配置,LED连接的引脚
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENAB
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
页: [1]
查看完整版本: 04:(尺度库)使用外部制止按键控制LED/编码器计次