STM32外部中断(EXTI)控制LED亮灭的代码
2024-09-07 16:20:02
led.c
#include "led.h"
void LED_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
}
void LED_Toggle(void)
{
GPIOB->ODR ^= GPIO_Pin_0;
}
led.h
#ifndef __LED_H
#define __LED_H
#include "stm32f10x.h"
void LED_Config(void);
void LED_Toggle(void);
#endif
exti.c
#include "exti.h"
#include "led.h"
static void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStruct.NVIC_IRQChannel=EXTI0_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStruct);
}
void EXTI_Config(void)
{
EXTI_InitTypeDef EXTI_InitStruct;
NVIC_Config();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
EXTI_InitStruct.EXTI_Line=EXTI_Line0;
EXTI_InitStruct.EXTI_LineCmd=ENABLE;
EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStruct);
}
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0)) LED_Toggle();
EXTI_ClearITPendingBit(EXTI_Line0);
}
exti.h
#ifndef __EXTI_H
#define __EXTI_H
#include "stm32f10x.h"
void EXTI_Config(void);
#endif
main.c
#include "stm32f10x.h"
#include "led.h"
#include "exti.h"
int main(void)
{
LED_Config();
EXTI_Config();
while(1)
{
}
}
最新文章
- [LeetCode] Product of Array Except Self 除本身之外的数组之积
- 轻松解决MYSQL数据库连接过多的错误
- mysql 5.7.15发布
- SaltStack 入门(赵班长)
- WordPress小工具开发教程(网站公告)
- 关于C# XML序列化的一个BUG的修改
- motan源码分析五:cluster相关
- Ubuntu 下启动/停止/重启mysql服务
- 用C++写一个简单的订阅者
- 站在OC的基础上快速理解Swift的类与结构体
- JMX简单入门
- ANDROID基础ACTIVITY篇之Activity的生命周期(一)
- Delphi Web开发连载 --ThinkDelphi (序)
- FT 软件项目管理
- tar.gz压缩,查看,解压
- Codeforces Gym 101291C【优先队列】
- qhfl-5 redis 简单操作
- Arduino和C51开发DHT11温湿度传感器
- kafka consumer demo
- 浅谈vuex
热门文章
- [题解] Codeforces 438 E The Child and Binary Tree DP,多项式,生成函数
- P2680 [NOIP2015 提高组] 运输计划 (树上差分-边差分)
- POJ3662 [USACO08JAN]Telephone Lines (二分答案/分层图求最短路)
- 14.MongoDB系列之配置分片
- Linux基础_3_文件/文件夹权限管理
- C++ set集合容器用法解析
- 亚马逊云 RDB数据故障转移(多可用区)
- SQL--临时表的使用
- Nacos基本学习
- Redis管理及监控工具推荐