【iCore4 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
2017-08-07 08:40
369 查看
实验原理:
按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻。
初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V);
当按键按下时,PB9直接被按键短接到GND,呈低电平,因此PB9的电平变化产生下降
沿,从而进入中断函数,进入中断回调。
实验现象:
按键被按下一次,切换一个LED的状态。
源代码下载链接:
链接:http://pan.baidu.com/s/1hrCzb2s 密码:21yp
核心代码:
iCore4链接:
按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻。
初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V);
当按键按下时,PB9直接被按键短接到GND,呈低电平,因此PB9的电平变化产生下降
沿,从而进入中断函数,进入中断回调。
实验现象:
按键被按下一次,切换一个LED的状态。
源代码下载链接:
链接:http://pan.baidu.com/s/1hrCzb2s 密码:21yp
核心代码:
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); /* USER CODE BEGIN 2 */ LED_RED_ON; /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { static int led_work_status = 0; HAL_Delay(10); if(ARM_KEY_STATE == KEY_DOWN){ led_work_status += 1; if(led_work_status > 2)led_work_status = 0; } switch(led_work_status){ case 0: LED_RED_ON; LED_GREEN_OFF; LED_BLUE_OFF; break; case 1: LED_RED_OFF; LED_GREEN_ON; LED_BLUE_OFF; break; case 2: LED_RED_OFF; LED_GREEN_OFF; LED_BLUE_ON; break; default: break; } __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_9); }
iCore4链接:
相关文章推荐
- 【iCore3 双核心板】例程三:EXTI中断输入实验——读取ARM按键状态
- 【iCore1S 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
- 【iCore4 双核心板_ARM】例程二:读取ARM按键状态
- 【iCore3 双核心板】例程二:读取arm按键状态
- 【iCore4 双核心板_ARM】例程十三:SDIO实验——读取SD卡信息
- 【iCore1S 双核心板_ARM】例程二:读取ARM按键状态
- 【iCore4 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
- 【iCore4 双核心板_ARM】例程二十八:FSMC实验——读写FPGA
- 【iCore4 双核心板_ARM】例程三十五:HTTP_IAP_ARM实验——更新升级STM32
- 【iCore4 双核心板_ARM】例程十七:USB_MSC实验——读/写U盘(大容量存储器)
- 【iCore4 双核心板_FPGA】例程十四:基于I2C的ARM与FPGA通信实验
- 【iCore4 双核心板_ARM】例程三十六:DAC实验——输出直流电压
- 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED
- 【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯
- 【iCore4 双核心板_ARM】例程二十一:LWIP_TCP_SERVER实验——以太网数据传输
- 【iCore1S 双核心板_FPGA】例程二:GPIO输入实验——识别按键输入
- 【iCore4 双核心板_ARM】例程二十:LWIP_TCP_CLIENT实验——以太网数据传输
- 【iCore4 双核心板_FPGA】例程十三:基于SPI的ARM与FPGA通信实验
- 【iCore4 双核心板_ARM】例程二十九:SD_IAP_FPGA实验——更新升级FPGA
- 【iCore4 双核心板_ARM】例程三十七:SDRAM实验——读写SDRAM