stm32f429 中通过基本定时器中断控制LED灯亮一秒、灭一秒

2024-04-14 02:58

本文主要是介绍stm32f429 中通过基本定时器中断控制LED灯亮一秒、灭一秒,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

stm32f429中基本定时器有两个,通用定时器有十个,高级定时器有两个。其中基本定时器为TIM6和TIM7。

此处通过编写TIM7定时中断控制LED灯亮灭,TIM6与之类似。

首先可以新建一个.c 和.h 文件,在.c文件中进行TIM7函数定义等,如下图所示:

#include "bsp_tim_basic.h"
static void BASIC_TIMx_Mode_Config()
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE);//开启时钟TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;//结构体申明TIM_TimeBaseInitStruct.TIM_Prescaler=8999;//设置时钟周期为10000hz psc 90M/(psc+1)TIM_TimeBaseInitStruct.TIM_Period=9999;//设置ARR 10000次TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE);//使能更新TIM_TimeBaseInit(TIM7,&TIM_TimeBaseInitStruct);//定时器初始化TIM_Cmd(TIM7,ENABLE);//定时器使能
}
static void NVIC_TIMBasic_Config()
{NVIC_InitTypeDef NVIC_InitStruct;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStruct.NVIC_IRQChannel=TIM7_IRQn;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStruct);
}
void TIMx_Basic_Config(void)
{NVIC_TIMBasic_Config();BASIC_TIMx_Mode_Config();
}

由于前两个函数前有static修饰,所以写了最后一个函数以便于其他文件对前两个函数的调用。

在.h文件中对所需的头文件以及可被外部调用的函数进行申明。

#ifndef _BSP_TIM_BASIC_H
#define _BSP_TIM_BASIC_H#include "stm32f4xx_tim.h"
#include "stm32f4xx_rcc.h"
#include "misc.h"extern void TIMx_Basic_Config(void);
#endif

这边编写完成后需要记得在stm32f4xx_it.c中进行中断函数的编写,其中控制LED灯亮灭便在此处被执行。

void TIM7_IRQHandler(void)
{if (TIM_GetITStatus(TIM7,TIM_IT_Update)!=RESET) {	GPIO_WriteBit(GPIOC,GPIO_Pin_1,1-(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_1)));}		 TIM_ClearITPendingBit(TIM7,TIM_IT_Update);  		 }

GPIO_WriteBit用于给LED灯置所想状态,在这里的最后一个参数通过GPIO_ReadOutputDataBit函数读当前的状态,通过1减去当前状态来获得相反的状态。

在main函数中只要进行简单的调用即可。

#include "stm32f4xx.h"
#include "bsp_led.h"
#include "bsp_tim_basic.h"
#include "bsp_usart.h"
int main(void)
{usart1_init();LED_GPIO_Config();TIMx_Basic_Config();while(1){}
}

 

这篇关于stm32f429 中通过基本定时器中断控制LED灯亮一秒、灭一秒的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/901909

相关文章

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I