基本定时器

2023-11-20

#include "stm32f4xx.h"  

//LED灯初始化
void LED_Init(void)
{
	GPIO_InitTypeDef   GPIO_InitStructure;

	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
	
	GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode_OUT;			//输出模式
	GPIO_InitStructure.GPIO_OType	= GPIO_OType_PP;			//推挽输出
	GPIO_InitStructure.GPIO_Speed	= GPIO_Speed_100MHz;		//输出速率
	GPIO_InitStructure.GPIO_PuPd 	= GPIO_PuPd_NOPULL;			//无上下拉
	GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_9|GPIO_Pin_10;	//引脚编号
	GPIO_Init(GPIOF, &GPIO_InitStructure);
	
	GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10); //默认不亮

}



//TIM6定时器的初始化 8400  2000
void TIM6_Init(uint16_t psc,uint16_t arr)
{
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	
	//1.打开TIM6的外设时钟  APB1
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);
	
	//2.配置定时器TIM6的参数  定时200ms  APB1定时时钟84MHZ(84000000HZ) 数84次花费1us   1ms=1000us 数84000次花费1ms 200ms=84000*200
	//						  定时200ms	 经过8400分频  10KHZ(10000HZ)	 数1次花费100us  1ms=1000us 数10次花费1ms  200ms=10*200		
	TIM_TimeBaseStructure.TIM_Prescaler 	= psc-1;				//预分频值(数数的快慢)
	TIM_TimeBaseStructure.TIM_Period 		= arr-1;				//计数周期(打算数多少次)
	TIM_TimeBaseStructure.TIM_CounterMode 	= TIM_CounterMode_Up; 	//计数模式(打算怎么数数)
	TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);

	//3.配置NVIC(中断通道+优先级)
	NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn;				//中断通道
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;		//抢占优先级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;				//响应优先级
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;					//使能中断通道
	NVIC_Init(&NVIC_InitStructure);

	//4.选择TIM6的中断源  更新事件发生中断
	TIM_ITConfig(TIM6,TIM_IT_Update, ENABLE);

	//5.使能定时器
	TIM_Cmd(TIM6, ENABLE);
}


int main()
{
	//1.硬件初始化
	LED_Init();
	TIM6_Init(8400,2000);  //相当于定时200ms
	
	//2.进入死循环
	while(1)
	{
		

		
	}
}

//TIM6的中断服务函数
void TIM6_DAC_IRQHandler(void)
{
	//检测中断是否发生
	if( TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET )
	{
		TIM_ClearITPendingBit(TIM6, TIM_IT_Update);//清除中断状态
		
		//异常处理
		GPIO_ToggleBits(GPIOF,GPIO_Pin_9);
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基本定时器 的相关文章

  • 快速开始一个 CakePHP project 的 基础/步骤

    请参考 CakePhP cookbook4 0 好的这就是本文和全部与核心 你可以跳出去了 好 正经一点 回来 1 下载xampp php集成环境 2 下载cakephp 框架 查看cookbook中的installation a 若用的x
  • 引进包类

    使用Support Library 支持库 Using the Support Library 负责人 River 完成时间 7月18日 原文链接 http developer android com training basics fra

随机推荐

  • (六)Spring Cloud Alibaba Sentinel(含案例源码、案例解析及软件)

    案例源码gitee地址 https gitee com BanSheng spring cloud alibaba examples tree master sentinel example client Spring Cloud Alib
  • 人工智能技术应用中机器学习里的6种偏差

    在人工智能的学习过程中 偏差会以多种不同的形式出现在机器学习中 Bias的定义 Bias 对某人或某一群体的倾向或偏见 尤指被认为不公平的方式 Bias被解释为偏差也可解释为偏见 其定义包括 不公平 一词 偏差几乎可以在每个阶段影响机器学习
  • msm8953-配置I2C 速率

    前言 本文记录调试高通平台某I2C 器件通讯出现异常 尝试修改I2C 时钟速率时所做的记录 平台 MSM8953 系统 Android 9 0 分类 I2C CLK 结论 先说结论 经过分析以及验证 平台支持的I2C特性如下 默认速度 10
  • eclipse json转为java类

    1 安装GsonFormat插件 插件地址 https github com wenxunyu GsonFormat 安装步骤在上面的地址中有 2 注意 直接放在dropins根目录下 不要放在子文件夹下 否则报错 不能正常使用插件
  • Java知识大全 - 五、Java高级编程

    1 异常和错误处理 在 Java 中 异常用于处理程序执行期间可能发生的错误和其他异常情况 异常允许开发人员以结构化和一致的方式处理错误 从而使代码更加健壮和可靠 发生错误时 Java 会创建一个异常对象 其中包含有关错误的信息 例如错误的
  • linux入门系列19--数据库管理系统(DBMS)之MariaDB

    前面讲完Linux下一系列服务的配置和使用之后 本文简单介绍一款数据库管理系统 MySQL的兄弟 MariaDB 如果你有MySQL或其他数据的使用经验 MariaDB使用起来将非常轻松 本文讲解Centos7默认的数据MariaDB 由于
  • Centos下使用Clion,nginx的CMakeLists.txt,分3步配置。

    nginx的配置 configure with http ssl module with http v2 module Clion下的CMakeLists txt 1 将Nginx的代码全部加入CMakeLists txt cmake mi
  • 在silverlight中定制自己的MessageBox(消息框)

    在silverlight中 如果想使用 消息框 可使用下面的方法 即 HtmlPage Window Alert 消息框内容 如果想要显示更加复杂的内容或定义消息框样式的话 基本上没有什么好的方法 最近在网上看到了一篇文章 该文章的作者也谈
  • Oracle增删改以及事务

    select from dept 部门表 select from emp 员工表 create table newEmp as select from emp where 1 2 插入数据 1 to date 值 格式 函数 insert
  • C/C++内存泄漏与检测

    该死系统存在内存泄漏问题 项目中由于各方面因素 总是有人抱怨存在内存泄漏 系统长时间运行之后 可用内存越来越少 甚至导致了某些服务失败 内存泄漏是最难发现的常见错误之一 因为除非用完内存或调用malloc失败 否则都不会导致任何问题 实际上
  • 如何求自己数据的均值

    博主的技术交流群 722058911 问题背景 在分类网络中 往往需要突出前景 弱化背景 往往有一个操作是减去均值 解决办法 供参考 我是这么解决的 求自己数据集的均值和方差 def compute mean std your datase
  • c语言中atoi函数用法以及功能

    atoi函数是无意中看别人代码发现的我才疏学浅所以整理了一些关于atoi的知识点 atoi的头文件 include
  • 程序员解决问题的60个策略(转)

    英文原文 60 Problem Solving Strategies 程序员的生活就是解决一个又一个问题 永无止境 这篇文章介绍了一系列解决问题的策略 根本的指导方针 1 首先写代码的时候最好不要有缺陷 最好的修复方法就是让 bug 胎死腹
  • 【Tomcat】:One or more listeners failed to start.报错解决方案

    报错信息 One or more listeners failed to start Full details will be found in the appropriate container log file 具体就是web xml此
  • Java实现斗地主游戏中洗牌,发牌,牌顺序逻辑

    需求 在启动游戏房间时 应提前准备好54张牌完成洗牌 发牌 牌顺序逻辑 分析 1 当系统启动的同时需要准备好数据的时候 就可以用静态代码块了 2 洗牌就是打乱牌的顺序 3 定义三个玩家 依次发出51张牌 4 给玩家的牌进行排序 代码实现 C
  • LeetCode题目笔记——24. 两两交换链表中的节点

    文章目录 题目描述 题目链接 题目难度 中等 方法一 迭代 代码 C 代码 python 方法二 递归 代码 C 总结 题目描述 或许这也是个经典的面试题 记录一手 给你一个链表 两两交换其中相邻的节点 并返回交换后链表的头节点 你必须在不
  • FM33A048B调试特性

    调试特性 处理器支持以下调试特性 程序的暂停 恢复及单步执行 访 问内核寄存器和特殊寄存器 硬件断点 4 个 软件断点 不限数量的 BKPT 指令 数据监视点 1 个 动态非侵入式存储器访问 无需停止处理器 SWD 接口 Cortex M0
  • code-server c/c++/python语言环境配置

    0 前言 这篇主要配置python 非常简单非常粗暴 直接终端命令行操作 一 配置python 先看看容器里面有没有自带pythonx whereis python 如上图 说明有了 所以我这边不安装了 但是输入 python V 没有输出
  • Spring集成MyBatis

    将mybatis与spring进行整合 主要解决的问题就是讲SqlSessionFactory对象交由spring来管理 所以 该整合 只需要将SqlSessionFactory的对象生成器SqlSessionFactoryBean注册在s
  • 基本定时器

    include stm32f4xx h LED灯初始化 void LED Init void GPIO InitTypeDef GPIO InitStructure RCC AHB1PeriphClockCmd RCC AHB1Periph