STM32F091芯片 配置GPIO端口(以LED灯闪烁为例子)

led灯调试记录

  1. 配置GPIO 端口
    根据原理图选择正确的GPIO管脚;
    CPU端管脚图
    LED_RED电路图LED_GREEN电路图
    其中P10, P11分别为红灯、绿灯的控制管脚
  2. 配置GPIO管脚

1)

`typedef struct     //GPIO输入输出口变量定义
{
	GPIO_TypeDef*	GPIOx;
	uint32_t GPIO_Pin;		
}TGPIO;

2)`

TGPIO PIN_GREEN = {GPIOD,GPIO_Pin_11};     //红绿灯管脚定义
TGPIO PIN_RED 	= {GPIOD,GPIO_Pin_10};

3)

 void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;   //定义一个GPIO_InitTypeDef类型的结构体
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD);  //开启GPIOD的外设时钟
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  //设置引脚模式为通用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置引脚速率50MHZ
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不上拉,也不下拉
GPIO_InitStructure.GPIO_Pin= PIN_GREEN.GPIO_Pin|PIN_RED.GPIO_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //设置为输出管脚
GPIO_Init(GPIOD, &GPIO_InitStructure);  //调用库函数,初始化GPIOD
}

配置GPIO的时候要先定义一个GPIO结构体,再给结构体内的成员赋值。
其相关值都是设定好的,我们只需要配置和使用,配置完成即可调用

  1. 定义GPIO口的输出

根据原理图,确认端口输出低电平时,灯亮;反之则灯灭;
因此调用STM官方库的引脚电流拉高/拉低函数,有如下定义

#define		GREEN_ON		(GPIO_ResetBits(PIN_GREEN.GPIOx,PIN_GREEN.GPIO_Pin))	
#define		GREEN_OFF		(GPIO_SetBits(PIN_GREEN.GPIOx,PIN_GREEN.GPIO_Pin))
#define		RED_ON			(GPIO_ResetBits(PIN_RED.GPIOx,PIN_RED.GPIO_Pin))	
#define		RED_OFF			(GPIO_SetBits(PIN_RED.GPIOx,PIN_RED.GPIO_Pin))
  1. .定义LEDFLASH函数
void  LedFlash()
{			   static BYTE i=0;  
		       if(i%4<2){    //正常模式,红绿灯交替慢闪0.5s
			      GREEN_ON;
				  RED_OFF;
			   }
			   else{
				  RED_ON;
			      GREEN_OFF;
			   }	
               i++; 
}
  1. 将LEDFLASH装载入任务循环队列
SetCycleTask( LedFlash,NULL,0,250,TASK_SUSPEND,PriorityLevel(1));  //循环周期为250ms,													     //优先级为1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值