【嵌入式系统实践】实验三EXTI按钮外部中断控制LED灯参考代码

此内容不属于实验内容,因自己手头有一STM32F103,故验证性的进行代码实验,按照老师课堂ppt进行了一下复现。

通过按钮控制LED灯的亮灭(状态取反)。

main.c代码:

cpp 复制代码
#include "STM32F10X.h"
#include "stdio.h"

void NVIC_Conf(void){
	NVIC_InitTypeDef Nvic;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
	Nvic.NVIC_IRQChannel = EXTI9_5_IRQn;
	Nvic.NVIC_IRQChannelPreemptionPriority = 0;
	Nvic.NVIC_IRQChannelSubPriority = 0;
	Nvic.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&Nvic);
}

void LED_Conf(void){			//pa8
	GPIO_InitTypeDef led;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	led.GPIO_Pin = GPIO_Pin_8;
	led.GPIO_Speed = GPIO_Speed_50MHz;
	led.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOA, &led);
}

void KEY_Conf(void){			//pc5 key0
	GPIO_InitTypeDef key;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);
	key.GPIO_Pin = GPIO_Pin_5;
	key.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_Init(GPIOC, &key);
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);
}

void EXTI_conf(void){
	EXTI_InitTypeDef exti;
	exti.EXTI_Line = EXTI_Line5;
	exti.EXTI_Mode = EXTI_Mode_Interrupt;
	exti.EXTI_Trigger = EXTI_Trigger_Falling;
	EXTI_Init(&exti);
}

int main(void){
	NVIC_Conf();
	LED_Conf();
	KEY_Conf();
	EXTI_conf();
	GPIO_ResetBits(GPIOA, GPIO_Pin_8);
	while(1){
	}

}

it.c部分代码:

cpp 复制代码
void EXTI9_5_IRQHandler(void)
{
     if(EXTI_GetITStatus(EXTI_Line5) != RESET) 
     {
        GPIO_WriteBit(GPIOA, GPIO_Pin_8,(BitAction)((1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8))));
        EXTI_ClearITPendingBit(EXTI_Line5); 
     }
}
相关推荐
magic_now8 小时前
U-Boot双阶段启动机制深度解析:init_sequence_f[] 与 init_sequence_r[]
linux·嵌入式硬件
济6178 小时前
FreeRTOS日志任务设计----LogTask 日志任务
单片机·嵌入式·freertos
振南的单片机世界8 小时前
PWM模拟电压:数字信号“平均”一下,就能变成模拟量
stm32·单片机·嵌入式硬件
blevoice9 小时前
杰理AC6966B-QFN32蓝牙音频进阶:获取手机歌曲信息——让音箱“报歌名”其实不难
嵌入式硬件·智能手机·音视频·jl杰理蓝牙音频芯片·杰理ac696n开发板·ac6966b蓝牙音响芯片
LCG元9 小时前
STM32实战:基于STM32F103的CANopen协议通信实战
stm32·单片机·嵌入式硬件
Hello_Embed9 小时前
libmodbus 源码分析
笔记·stm32·单片机·嵌入式·ai编程
12.=0.9 小时前
【stm32_8】IIC内部集成电路——IIC的时序、利用IO口模拟IIC的时序、IIC通信器件的读写使用、半导体存储器的基本概述
c语言·stm32·单片机·嵌入式硬件
namas88489 小时前
APLC IDE 用户手册
ide·单片机·嵌入式硬件
草莓熊Lotso11 小时前
【Linux网络】UDP Socket 编程全解析:从回显服务到通用字典服务,从零实现工业级代码
linux·运维·服务器·数据库·c++·单片机·udp
fengfuyao9851 天前
利用 STM32 和 ADS1256 进行高精度数据采集
stm32·单片机·嵌入式硬件