STM32
直播中

李敏

7年用户 1333经验值
私信 关注
[问答]

什么是中断?中断和轮询的区别?怎么使用中断?

什么是中断?中断和轮询的区别?怎么使用中断?

回帖(1)

马舒滟

2021-11-17 10:32:35
以下程序使用的开发板为"普中PZ6806L"
什么是中断?中断和轮询的区别?怎么使用中断?这些都是我们需要学习的内容。
下面是实战内容(以下为零基础教学为小白提供学习)
1.第一步先选择好自己使用的smt32的型号。

  

  

2将PC0设置为输出(我的板子PC0是LED),将PA0设置为EXTI0(我这里PA0是一个开关)你们需要根据自己的板子来设置对应的GPIO口。

  

  

3.将设置好的GPIO口PC0调至High(因为我的板子是低电平点亮),把PA0的设置为Pull-dow(下降沿触发)
  

  

4.将RCC里的高速时钟调至Crystal模式。

  

  

5.将SYS里的Debug调至Serial Wire模式。

  

  

6.把中断打开(以上步骤不分前后)。

  

  

7.将时钟树设置好。

  

  

8.将存储路径和代码生成器设置好就可以点击GENERATE CODE生成代码了。

  

  

9.“KG0代表了PA0”(下面函数的意思)

GPIO输入检测函数
HAL_GPIO_ReadPin(GPIOx, GPIO_Pin);
GPIOx: GPIO端口,GPIOA~GPIOH
GPIO_Pin: 该端口对应的Pin脚数
#define  KG0     HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)//读取PA0的输入电平状态

  

  

10.下面是完成好的程序,把它下载进开发板就OK了(效果是按一下开关亮,按一下开关灭)

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)//中断回调函数
{
   if(KG0==1)//判断KG0是高电平还是低电平(1是高电平0是低电平)
  {
          HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_0);//翻转PA0的电平状态
  }
}


  

恭喜你学会了一个使用中断的一个小程序。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分