普通gpio初始化,只需设置输入输出模式和是否使能中断:
void GPIO_SetMode(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode);
* @param[in] port GPIO port. It could be PA, PB, PC, PD, PE or PF.
* @param[in] u32PinMask The single or multiple pins of specified GPIO port.
* It could be BIT0 ~ BIT15 for PA, PB, PC and PD GPIO port.
* It could be BIT0 ~ BIT14 for PE GPIO port.
* It could be BIT0 ~ BIT7 for PF GPIO port.
* @param[in] u32Mode Operation mode. It could be
* GPIO_MODE_INPUT, GPIO_MODE_OUTPUT, GPIO_MODE_OPEN_DRAIN, GPIO_MODE_QUASI.
void GPIO_EnableInt(GPIO_T *port, uint32_t u32Pin, uint32_t u32IntAttribs);
* @param[in] u32IntAttribs The interrupt attribute of specified GPIO pin. It could be
* GPIO_INT_RISING, GPIO_INT_FALLING, GPIO_INT_BOTH_EDGE, GPIO_INT_HIGH, GPIO_INT_LOW.
void GPIO_DisableInt(GPIO_T *port, uint32_t u32Pin);
//是否确定要加入__asm("nop");之前运行时死机。
1 //开放中断 2 NVIC_EnableIRQ(GPA_IRQn); 3 __asm("nop"); 4 NVIC_EnableIRQ(GPD_IRQn); 5 __asm("nop"); 6 NVIC_EnableIRQ(GPE_IRQn);
变量转化算法:
uint32_t i;
volatile uint32_t *ptrLED[_LED_Bar_Count] = {&PB2, &PB3, &PC3, &PC2, &PA9, &PB1, &PC7};
for(i = 0; i < _LED_Bar_Count; i++)
{
if((Number > i) & 0x01)
*ptrLED[i] = 0; //LED ON
else
*ptrLED[i] = 1; //LED OFF
}