LED流水燈程序初始化流程
[cpp] view plain copy
- //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);
寄存器方式
[cpp] view plain copy
- 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
[cpp] view plain copy
- #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
"\"為行連接符,表示本行與上一行屬於同一代碼行.
端口設置可以使用“sys.h“下的PXout(n)=0/1;PXin(n);來進行設置