以下程序使用的开发板为"普中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”(下面函数的意思)
#define KG0 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)
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的电平状态
}
}
恭喜你学会了一个使用中断的一个小程序。