//1.定義結構體變量
GPIO_InitTypeDef GPIO_InitStructure;
//2.開啟GPIOC的外部時鐘,不同的外設開啟不同的時鐘,IO口復用時兩個時鐘都要開啟。stmf10x_rcc.h
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//3.設置要控制的GPIO管腳
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
//4.設置管腳模式,推挽輸出
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
//5.設置GPIOC的引腳速度為50MHz
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
//6.調用庫函數初始化GPIOC,初始化IO口
GPIO_Init(GPIOC,&GPIO_InitStructure);
//7.關閉所有LED等燈,GPIO_ResetBits(,);GPIO_SetBits(,);置位和清0函數
GPIO_SetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);
寄存器方式
GPIO_TypeDef * GPIOx;
GPI0x=GPIOA;
//開啟GPIOA外設時鐘
GPIOx->APB2ENR|=1<<2;
//配置GPIOA.3 4 5為推挽輸出50MHZ
GPIOx->CRL|=0X03<<12|0X03<<16|0X03<<20;
//GPIOA.3 4 5輸出0xff。
GPIOx->ODR=0XFF;
LED.H
#ifndef __LED_H
#define __LED_H
#include 'stm32f10x.h'
#define LED1(a) if(a)
GPIO_SetBits(GPIOC,GPIO_Pin_3);
else
GPIO_ResetBits(GPIOC,GPIO_Pin_3);
#define LED2(a) if(a)
GPIO_SetBits(GPIOC,GPIO_Pin_4);
else
GPIO_ResetBits(GPIOC,GPIO_Pin_4);
#define LED3(a) if(a)
GPIO_SetBits(GPIOC,GPIO_Pin_5);
else
GPIO_ResetBits(GPIOC,GPIO_Pin_5);
void GPIO_Config(void);
#endif
上一篇:基于stm32的多功能時鐘3——MQ135檢測空氣質量
下一篇:STM32學習(二)GPIO推挽輸出實驗
推薦閱讀最新更新時間:2025-04-23 14:37

