- IO初始化框架参考:
- #include "includes.h"
- #include "TrafficLights_GPIO_Config.h"
- //* 如果在其它c文件已定义,则去掉本行第一个斜杠,以屏蔽这个函数定义
- //STM32F0系列设置GPIO
- void SetGPIO(GPIO_TypeDef *Port,
- u16 pin,
- GPIOSpeed_TypeDef speed,
- GPIOMode_TypeDef mode,
- GPIOOType_TypeDef OType,
- GPIOPuPd_TypeDef PuPd)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Pin = pin;
- GPIO_InitStructure.GPIO_Mode = mode;
- GPIO_InitStructure.GPIO_OType = OType;
- GPIO_InitStructure.GPIO_PuPd = PuPd;
- GPIO_InitStructure.GPIO_Speed = speed;
- GPIO_Init(Port, &GPIO_InitStructure);
- }
- // */
- const GPIO_Define_Struct TrafficLights_Gpio[TrafficLights_GPIO_Count] = {
- {GPIOA, GPIO_Pin_0 ,GPIO_Speed_10MHz, GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, HC595_CLK}, //PA0 定义为HC595_CLK
- {GPIOA, GPIO_Pin_1 ,GPIO_Speed_10MHz, GPIO_Mode_IN, GPIO_OType_OD, GPIO_PuPd_UP, KEY1}, //PA1 定义为KEY1
- {GPIOA, GPIO_Pin_2 ,GPIO_Speed_10MHz, GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, HC595_DATA}, //PA2 定义为HC595_DATA
- {GPIOA, GPIO_Pin_3 ,GPIO_Speed_10MHz, GPIO_Mode_IN, GPIO_OType_OD, GPIO_PuPd_UP, HC595_DI}, //PA3 定义为HC595_DI
- {GPIOA, GPIO_Pin_4 ,GPIO_Speed_10MHz, GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, HC595_SHIFT}, //PA4 定义为HC595_SHIFT
- {GPIOA, GPIO_Pin_5 ,GPIO_Speed_10MHz, GPIO_Mode_OUT, GPIO_OType_OD, GPIO_PuPd_UP, KEY_LED3}, //PA5 定义为KEY_LED3
- {GPIOA, GPIO_Pin_6 ,GPIO_Speed_10MHz, GPIO_Mode_OUT, GPIO_OType_OD, GPIO_PuPd_UP, KEY_LED2}, //PA6 定义为KEY_LED2
- {GPIOA, GPIO_Pin_7 ,GPIO_Speed_10MHz, GPIO_Mode_OUT, GPIO_OType_OD, GPIO_PuPd_UP, KEY_LED1}, //PA7 定义为KEY_LED1
- {GPIOB, GPIO_Pin_1 ,GPIO_Speed_10MHz, GPIO_Mode_OUT, GPIO_OType_PP, GPIO_PuPd_NOPULL, RUN_LED}, //PB1 定义为RUN_LED
- {GPIOA, GPIO_Pin_9 ,GPIO_Speed_10MHz, GPIO_Mode_AF, GPIO_OType_PP, GPIO_PuPd_NOPULL, TX1}, //PA9 定义为TX1
- {GPIOA, GPIO_Pin_10,GPIO_Speed_10MHz, GPIO_Mode_IN, GPIO_OType_OD, GPIO_PuPd_UP, RX1}, //PA10定义为RX1
- };
- void TrafficLights_GPIO_Configuration(void)//初始化所用到的GPIO
- {
- u8 i,num=TrafficLights_GPIO_Count;
- GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1); //串口1:TXD
- GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1); //串口1:RXD
- for(i=0;i<num;i++)
- {
- if(TrafficLights_Gpio[i].no != i)//检查管脚编号是否正确
- {
- // DebugPrint("错误的管脚编号!");
- while(1)
- ;
- }
- else
- {
- SetGPIO(TrafficLights_Gpio[i].Port,TrafficLights_Gpio[i].pin,TrafficLights_Gpio[i].speed,TrafficLights_Gpio[i].mode,TrafficLights_Gpio[i].otype,TrafficLights_Gpio[i].pupd);
- }
- }
- //添加其它初始化(如重映射、拉高或拉低某些IO等等)……
- }