STM32 | 看门狗+RTC源码解析

点击上方"蓝字"关注我们

作业

1、使用基本定时7,完成一个定时喂狗的程序

01、上节回顾

STM32 | 独立看门狗+RTC时间(第八天)

02、定时器头文件

#ifndef __TIM_H#define __TIM_H#include "stm32f4xx.h"void Tim3_Init(void);void Tim7_Init(void);#endif

03、定时器源文件

#include "tim.h"/*********************************定时器说明TIM3 -- APB1(定时器频率:84MHZ)TIM3是16位定时器**********************************/void Tim3_Init(void){  TIM_TimeBaseInitTypeDef    TIM_TimeBaseInitStruct;  NVIC_InitTypeDef        NVIC_InitStruct;  //1、能定时器时钟。  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    TIM_TimeBaseInitStruct.TIM_Prescaler  = (84-1);        //84分频,定时器频率84MHZ/84 = 1MHZ(计一个用1us)  TIM_TimeBaseInitStruct.TIM_Period    = (1000-1);        //计1000个数,在1MHZ下,用时1ms  TIM_TimeBaseInitStruct.TIM_CounterMode  = TIM_CounterMode_Up;  //向上计数  TIM_TimeBaseInitStruct.TIM_ClockDivision= TIM_CKD_DIV1;      //分频因子  1脉冲计一个数  //2、初始化定时器,配置ARR,PSC。  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct);  NVIC_InitStruct.NVIC_IRQChannel            = TIM3_IRQn;     //中断通道,可在stm32f4xx.h文件当中查找  NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority  = 1;        //抢占优先级  NVIC_InitStruct.NVIC_IRQChannelSubPriority      = 1;        //响应优先级  NVIC_InitStruct.NVIC_IRQChannelCmd          = ENABLE;      //通道使能  //3、启定时器中断,配置NVIC。  NVIC_Init(&NVIC_InitStruct);    //4、设置 TIM3_DIER  允许更新中断  TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);    //5、使能定时器。  TIM_Cmd(TIM3, ENABLE);}//编写中断服务函数。每隔1ms进入中断void  TIM3_IRQHandler(void){  static unsigned short led_flag = 0;    //判断更新标志位是否1  if(TIM_GetITStatus(TIM3, TIM_IT_Update) == SET)  {    led_flag++; //第隔1ms 值加1        if(led_flag%9 == 0)    {      //亮灯      GPIO_ResetBits(GPIOF, GPIO_Pin_9);    }    else    {      //灭灯      GPIO_SetBits(GPIOF, GPIO_Pin_9);        }        //清空更新标志位    TIM_ClearITPendingBit(TIM3, TIM_IT_Update);    }}/*********************************定时器说明TIM7 -- APB1(定时器频率:84MHZ)TIM7是16位定时器**********************************/void Tim7_Init(void){  TIM_TimeBaseInitTypeDef    TIM_TimeBaseInitStruct;  NVIC_InitTypeDef        NVIC_InitStruct;  //1、使能定时器时钟。  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);    TIM_TimeBaseInitStruct.TIM_Prescaler  = (8400-1);              //8400分频,定时器频率84MHZ/84 = 1MHZ(计一个用1us)  TIM_TimeBaseInitStruct.TIM_Period    = (10000-1);              //计10000个数,在1MHZ下,用时1s  TIM_TimeBaseInitStruct.TIM_CounterMode  = TIM_CounterMode_Up;  //向上计数  TIM_TimeBaseInitStruct.TIM_ClockDivision= TIM_CKD_DIV1;        //分频因子  1脉冲计一个数  //2、初始化定时器,配置ARR,PSC。  TIM_TimeBaseInit(TIM7, &TIM_TimeBaseInitStruct);  NVIC_InitStruct.NVIC_IRQChannel            = TIM7_IRQn;     //中断通道,可在stm32f4xx.h文件当中查找  NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority  = 1;    //抢占优先级  NVIC_InitStruct.NVIC_IRQChannelSubPriority      = 1;      //响应优先级  NVIC_InitStruct.NVIC_IRQChannelCmd          = ENABLE;      //通道使能  //3、启定时器中断,配置NVIC。  NVIC_Init(&NVIC_InitStruct);    //4、设置 TIM7_DIER  允许更新中断  TIM_ITConfig(TIM7, TIM_IT_Update, ENABLE);    //5、使能定时器。  TIM_Cmd(TIM7, ENABLE);}//编写中断服务函数。每隔1s进入中断void  TIM7_IRQHandler(void){  //判断更新标志位是否1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据解析的四种方式

常用的解析数据的四种方式包括: XPath解析数据BeautifulSoup解析数据正则表达式pyquery解析数据 话说pyquery这个库运用的比较熟练,因为以前java编程的时候,经常写jsp代码,用jquery的ajax进行异步请求,对html、js、c…

SpringData JPA Mongodb 查询部分字段

JPA 网上用的好像不多&#xff0c;找了好多材料以后最终找了这个可行的方案&#xff1a; Query(fields "{tender_id:1,_id:0}")List<MGPltTender> findByTenderIdIsNotNull(PageRequest pageRequest); 调用&#xff1a; Sort sort Sort.by(popularType.getC…

sqlite|轻量数据库|pgadmin4的sqlite数据库操作--重置密码和账号解锁

前言&#xff1a; pgadmin4的用户密码以及pgadmin4创建的pg数据库的连接信息等等都是存放在sqlite数据库内的&#xff1b;而有的时候&#xff0c;可能会由于自己的问题将pgadmin4的密码忘记&#xff0c;这个时候需要重置pgadmin4的密码&#xff0c;或者是pgadmin4的密码输错多…

【二维区域和检索-矩阵不可变】python刷题记录

一夜无解&#xff0c;痛苦&#xff0c;遂拜倒于灵神门下&#xff0c;妄做狂徒也&#xff01; . - 力扣&#xff08;LeetCode&#xff09; 灵神秒解如下&#xff1a; class NumMatrix:#二维初始矩阵def __init__(self, matrix: List[List[int]]):mlen(matrix)nlen(matrix[0])#…

Java重修笔记 第二十四天 模板设计模式

模板设计模式 当功能内部一部分实现是确定&#xff0c;一部分实现是不确定的&#xff0c;这时可以把不确定的部分暴露出去&#xff0c;让子类去实现。 抽象类定义算法骨架&#xff0c;包含抽象方法&#xff0c;需要子类去实现。 具体类继承抽象类&#xff0c;实现抽象类中的抽…

vue和微信小程序的区别、比较

找到一篇很好的关于vue和小程序之间的理解文章&#xff0c;在此分享一下&#xff1a; 前端 - vue和微信小程序的区别、比较 - 个人文章 - SegmentFault 思否https://segmentfault.com/a/1190000015684864

qt 国际化语言,英文和中文切换

1、把需要翻译转换的内用用tr()包含&#xff0c;比如&#xff1a; label->setText("hello word"); 2、在 .pro 文件中添加 TRANSLATIONS lang_en.ts \ lang_zn.ts 3、利用lupdate 工具提取…

3、PostgreSQL之高级特性

PostgreSQL之高级特性 1、视图 之前我们查询过城市的天气情况&#xff0c;假设天气记录和城市位置的组合列表对我们的应用有用&#xff0c;但我们又不想每次需要使用它时都敲入整个查询。我们可以在该查询上创建一个视图&#xff0c;这会给该查询一个名字&#xff0c;我们可以…

MySQL为什么使用B+树而不是跳表?

B树的设计能够减少磁盘I/O操作&#xff0c;通过一次磁盘读取获取尽可能多的数据。跳表搜索级别越高&#xff0c;IO的操作越多。 MySQL 使用 B 树而不是跳表主要有以下几个原因&#xff1a; 1. 磁盘读取效率 B 树的设计非常适合磁盘存储。B 树的节点包含多个键值对&#xff0c…

junit mockito Base基类

编写单元测试时我们都习惯性减少重复代码 以下基于spring mvc框架&#xff0c;需要手动pom导包 BaseTest类用于启动上下文进行debug调试 MockBaseTset类用于不启动上下文进行打桩mock pom.xml <dependency><groupId>org.mockito</groupId><artifactId…

Qt解析复杂的csv格式文件

/*csv格式是以逗号分隔列的。 * 每行内容是以换行符作为一行的。 * 如果内容中包含换行符&#xff0c;则整个内容要以双引号括起来。 * 如果内容中包含逗号&#xff0c;则整个内容要以双引号括起来。 * 如果内容中又有双引号&#xff0c;则会是2个双引号连在一起表示一个双引号…

单片机程序设计模式

RTOS:多任务拆分交叉执行 Q:状态机和多任务模式有什么区别 Q:任务创建和任务调度器是什么&#xff1f; 裸机程序的设计模式可以分为&#xff1a;轮询、前后台、定时器驱动、基于状态机。前面三种方 法都无法解决一个问题&#xff1a;假设有 A、B 两个都很耗时的函数&#xf…

从PyTorch官方的一篇教程说开去(2 - 源码)

先上图&#xff0c;上篇文章的运行结果&#xff0c;可以看到&#xff0c;算法在迭代了200来次左右达到人生巅峰&#xff0c;倒立摆金枪不倒&#xff0c;可以扛住连续200次操作。不幸的是&#xff0c;然后就出现了大幅度的回撤&#xff0c;每况愈下&#xff0c;在600次时候居然和…

高性能内存对象缓存

1&#xff1a;数据存储方式与数据过期方式 数据存储方式多种多样&#xff0c;以下为常见的几种&#xff1a; 1.关系型数据库&#xff1a;如 MySQL、Oracle 等&#xff0c;通过表格形式组织数据&#xff0c;具有严格的数据结构和关系约束&#xff0c;适用于结构化数据的存储和管…

设计模式第一天|了解设计模式、设计模式七大原则

文章目录 了解设计模式概念优点核心原则 设计模式七大原则单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则合成复用原则 了解设计模式 概念 软件设计模式(Software Design Patten),又称设计模式,是一套被反复使用,多数人只晓的,经过分类编目的,代码设计…

JVM知识点总结(全网最详细)!!!!

JVM知识总结 运行时数据区域程序计数器Java虚拟机栈局部变量表 StackOverflowError异常和OutOfMemoryError异常本地方法栈Java堆方法区运行时常量池 对象的创建对象的内存分配对象的内存布局对象头实例数据对齐填充 对象的访问定位使用句柄直接指针使用句柄和直接指针的优缺点 …

android11 屏蔽usb通过otg转接口外接鼠标设备

硬件平台&#xff1a;QCS6125 软件平台&#xff1a;Android11 需求&#xff1a;Android设备通过接usb转接线连接鼠标功能屏蔽。 考虑到屏蔽的层面可以从两个层面去做&#xff0c;一个是驱动层面不识别&#xff0c;一个就是Android系统层面不识别加载&#xff0c;本篇只讲后者。…

重置Kafka

重置kafka 1、关闭kafka kill -9 进程号 2、删除元数据 1&#xff09;zk zkCli.sh 2&#xff09;删除预kafka有关的所有信息 ls / rmr /config rmr /brokers 3、删除kafka的数据 所有节点都要删除 rm -rf /usr/local/soft/kafka_2.11-2.0.0/data 4、 重启 kafka-server-sta…

PHP房产中介租房卖房平台微信小程序系统源码

​&#x1f3e0;【租房卖房新选择】揭秘房产中介小程序&#xff0c;一键搞定置业大事&#xff01;&#x1f3e1; &#x1f50d;【开篇&#xff1a;告别繁琐&#xff0c;拥抱便捷】&#x1f50d; 还在为找房子跑断腿&#xff1f;为卖房发愁吗&#xff1f;今天给大家安利一个超…

IPython与Pandas:数据分析的动态组

IPython与Pandas&#xff1a;数据分析的动态组合 前言 欢迎来到"iPython与Pandas&#xff1a;数据分析的动态组合"教程&#xff01;无论你是数据分析新手还是希望提升技能的专业人士&#xff0c;这里都是你开始的地方。让我们开始这段数据分析之旅吧&#xff01; …