编程要点:
1)使能GPIO端口时钟; 2)初始化GPIO目标引脚为输入模式(浮空输入); 3)编写简单测试程序,检测按键的状态,实现按键控制LED灯;
bsp_led.h文件
#ifndef T_LED_H_
#define T_LED_H_
#include "stm32f10x.h"
//R-红色
#define LED1_GPIO_PORT GPIOB
#define LED1_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED1_GPIO_PIN GPIO_Pin_5
//G-绿色
#define LED2_GPIO_PORT GPIOB
#define LED2_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED2_GPIO_PIN GPIO_Pin_0
//B-蓝色
#define LED3_GPIO_PORT GPIOB
#define LED3_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED3_GPIO_PIN GPIO_Pin_1
以上代码分别把控制LED灯的GPIO端口,GPIO引脚号以及GPIO端口时钟封装起来了。在实际控制的时候我们就可以直接使用这些宏,以达到应用代码与硬件无关的效果。
/*直接操作寄存器的方法控制IO*/
#define digitalHi(p,i) {
p->BSRR=i;}//输出高电平
#define digitalLo(p,i) {
p->BRR=i;}//输出低电平
#define digitalToggle(p,i) {
p->ODR^=i;}//输出反转状态
/*定义控制IO的宏*/
#define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,
|