对于上一个实验流水灯来说,这一次的实验是获取输入的一个小demo。
在课堂上,看老师调试的时候,只要有输入则输入寄存器IDR的值就会改变,所以想要获得输入只需要循环去获取IDR的值即可。在stm32的库中有一个读取输入信息的函数:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 参数一是端口,参数二是针脚。返回值是十六进制的值(0x00或0x01),这个值可以直接与十进制的0或1比较。
有了这个之后就可以像上次的实验一样,先开启设备时钟,然后再设置引脚模式,最后调用这个函数读取信息即可。
1.按键电路原理图
由图中可以知道A端口的0号引脚为k1,C端口的13号引脚为k2。所以下一步要做的是读取A端口的0号引脚先试试能不能读取到信息。
2.源代码
#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
int K1=0,K2=0;
void Delay(__IO uint32_t nCount) //ÑÓ³Ù£¬²ÎÊýÊäÈë16½øÖÆÊý£¬È磺0x0FFFFF
{
for(; nCount != 0; nCount--);
}
void init(){
//¿ªÆôB¶Ë¿ÚµÄʱÖÓ£¬B¶Ë¿Ú¿ØÖÆ×ÅLED¡£
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,EN