我们会在上一章的代码基础上来完成这项任务,上一章是点亮了二极管,这回我们设置为按下按键后点亮二极管,放开则关闭二极管,下面分别以两种方法来 实现此功能
1.扫描方式:不断的读取PA3(按键1)的值,判断是否有值,有则是按键按下,点亮PA0(二极管1),无则为按键松开,关闭PA0(二级管1)
2.中断方式:按一下PA8(按键2)按键后,点亮PA1(二级管2),再按一下PA8(按键2),关闭PA1(二级管2),PA1(二级管2)在 每一次按下PA8(按键2)后交替变换。
首选在代码头部包含中断处理类
#include <stm32f10x_exti.h>
#include <misc.h>
修改
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
为
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);
在MAIN函数里定义一个变量用来存储PA3扫描的值,和中断定义
u8 rkey;
EXTI_InitTypeDef exti_it;
NVIC_InitTypeDef NVIC_InitStructure;
然后写一个二极管交替开关的函数,在主函数中如果只要调此方法即可实现二极管的开、关、开、关。。。操作
bool bLEDOn=FALSE;
void SwithLED()
{
if (bLEDOn) {
GPIO_ResetBits(GPIOA, GPIO_Pin_1);
bLEDOn=FALSE;
}
else {
GPIO_SetBits(GPIOA, GPIO_Pin_1);
bLEDOn=TRUE;
}
}