基本性能测试
1、GPIO-LED
部分代码: void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; __GPIOI_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_1; // 靠近边缘处LED GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOI, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOI,GPIO_PIN_1,GPIO_PIN_RESET); } void LED_Flash(void) { HAL_GPIO_TogglePin(GPIOI,GPIO_PIN_1); delay_ms(1000); }
2、GPIO-Button+LED
部分代码: void Key_Info_Init(void) { Key_Info.Num = 0; Key_Info.State = Key_UP; Key_Info.Num_Last = 0; Key_Info.Key_Delay_Cnt = 0; } void Key_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; __GPIOI_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOI, &GPIO_InitStruct); Key_Info_Init(); } void Key_Read(void) { u8 Key_CurrNum; delay_ms(1); Key_CurrNum = 0; Key_CurrNum = Independent_Key_Scan(); if((Key_Info.Shake_LastNum == Key_CurrNum)&&(Key_CurrNum != 0)) { Key_Info.Key_Delay_Cnt++; if(Key_Info.Key_Delay_Cnt > KEY_SHAKE_DELAY) { Key_Info.Key_Delay_Cnt = KEY_SHAKE_DELAY + 1; Key_Info.State = Key_KEEP; } if(Key_Info.Key_Delay_Cnt == KEY_SHAKE_DELAY) { Key_Info.Num = Key_Info.Shake_LastNum; Key_Info.State = Key_DOWN; } } else { Key_Info.Key_Delay_Cnt = 0; Key_Info.Num = 0; Key_Info.State = Key_UP; } Key_Info.Shake_LastNum = Key_CurrNum; }
3、外部中断部分代码
void GPIO_EXTI_ISR(uint16_t GPIO_Pin) { if(GPIO_Pin == GPIO_PIN_11) { HAL_GPIO_TogglePin(GPIOI,GPIO_PIN_1); } } int main(void) { System_Init(); SysTick_Init(NULL);
LED_Init(); Exti_Init(GPIO_EXTI_ISR);
while(1) {
} } void Exti_Init(void (*ISR)(uint16_t GPIO_Pin)) { GPIO_InitTypeDef GPIO_InitStruct; Exti_ISR.exti_isr = ISR; __GPIOI_CLK_ENABLE(); //使能GPIOI时钟 GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOI, &GPIO_InitStruct); /* Enable and set Button EXTI Interrupt to the lowest priority */ HAL_NVIC_SetPriority(EXTI15_10_IRQn , 0x0F, 0); HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); } void EXTI15_10_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11); } void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(Exti_ISR.exti_isr != NULL) Exti_ISR.exti_isr(GPIO_Pin); }
|