STM32G030C8T6:定时器1ms中断(以64MHz外部晶振为例)
本专栏记录STM32开发各个功能的详细过程,方便自己后续查看,当然也供正在入门STM32单片机的兄弟们参考;
本小节的目标是,系统主频64 MHZ,采用高速外部晶振,通过定时器3 每秒中断控制 PB9 引脚输出高低电平,从而实现 LED 灯的亮灭。
原理:通过配置定时器3每1mS进入中断一次,每进入中断服务程序一次,增加一次计数,计数到达500,控制PB9引脚输出高或低电平,从而实现1S钟周期闪烁。。
涉及到的知识:配置UART引脚,定时器中断,STM32CubeMX的使用
文章目录
- 1 新建工程
- 2 配置SWD下载引脚
- 3 配置GPIO输出
- 4 配置RCC
- 5 设置系统主频
- 6 定时器配置
- 6.1 错误配置记录
- 6.2 正确配置
- 7 生成工程
- 8 增加代码实现每1S 控制PB9 引脚输出高或者低电平
1 新建工程
点击File 菜单下的New Project

选择芯片型号,如下图所示先输入芯片型号,目前这边输入STM32G030C8,

双击选择,就确定了芯片型号,界面会变成如下图所示

2 配置SWD下载引脚
如下图所示,在Pinout&Configuration 栏目的System Core 下,先点击SYS,再勾选Serial Wire 框,
配置好SWD 下载引脚设置:

3 配置GPIO输出
按下图 的1,2,3 步骤完成PB9 引脚配置成GPIO 输出设置:

配置成功后如下图所示:

4 配置RCC
如下图,先点击RCC,在HSE 配置中选择Crystal/Ceramic Resonator 外部晶振设

5 设置系统主频
如下图, 先点击Clock Configuration 栏目,按下图的1,2,3,4 步骤完成系统64MHZ 主频设置:

6 定时器配置
6.1 错误配置记录
如下图的1,2,3,4 步骤完成定时器1ms 计时:
(注意,这里我踩了一个坑,误以为Clock source中的Internal Clock为内部时钟,而我是使用的外部晶振,所以我一直选择了第二个选项ETR2。其实第二个选项是ETR2 外部触发输入(ETR)(仅适用TIM2,3,4),意思外接界的其他信号源;正确的应该是:外部晶振也是internal clock ,相当于使用外部时钟分频来的时钟,只要你rcc配置的是外部晶振就没事),所以下面的示例是错误的,正确过程请参考6.2

ETR2 外部触发输入(ETR)(仅适用TIM2,3,4),意思外接界的其他信号源。
如下图所示完成TIM3 中断使能:

6.2 正确配置
如下图的1,2,3,4 步骤完成定时器1ms 计时:

因为我们选择的是64MHz的外部时钟,64分频,1000计数时,1ms产生一次中断。
上图中各个参数的计数以及计数器周期计算方法如下:
Clock Source(时钟来源) :本文中使用的64MHz外部晶振也要使用Internal Clock
计数器设置:
Prtscaler (定时器预分频系数) : 63
Counter Mode(计数模式) : Up(向上计数模式)
Counter Period(自动重装载值) : 999
CKD(时钟分频因子) : No Division 不分频 (可以选择二分频和四分频 )
auto-reload-preload(自动重装载) : Disable 不使能
定时器的定时周期计算方法:
T = (psc+1)(arr+1)/Tclk其中psc 为定时器预分频系数 arr为自动重装载值 Tclk为系统时钟频率
通过计算 T = (psc+1)(arr+1)/Tclk=(63+1)(999+1)/64us=1000us=1ms
因此实现了1ms中断。
如下图所示完成TIM3 中断使能:

7 生成工程
按照下图的步骤,进行项目配置,项目名称和路径设置等,生成项目的类型选择STM32CubeIDE(我这里以STM32CubeIDE为例,如果你要试用keil5,那就选择MDK-RAM,如果要使用makefile,就选择Makefile),注意项目名称和路径不要有中文名;

最后全部设置完毕后点击create code,生成项目代码:

生成的工程如下图所示:

8 增加代码实现每1S 控制PB9 引脚输出高或者低电平
如下图,如箭头所示实现1ms 中断回调函数中实现计数到500ms 后PB9 翻转输出,
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//1ms中断回调函数
{TimeCounter++;if(TimeCounter>=500)//500ms时间到{TimeCounter=0;HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);//LED反转输出}
}


相关文章:
STM32G030C8T6:定时器1ms中断(以64MHz外部晶振为例)
本专栏记录STM32开发各个功能的详细过程,方便自己后续查看,当然也供正在入门STM32单片机的兄弟们参考; 本小节的目标是,系统主频64 MHZ,采用高速外部晶振,通过定时器3 每秒中断控制 PB9 引脚输出高低电平,从…...
人工智能聊天机器人如何帮助您实现工作与生活的平衡
如何用AI聊天机器人实现高效工作生活平衡 工作与生活平衡是管理个人和职业生活需求和责任的能力。 在当今快节奏和竞争激烈的世界中,工作与生活平衡被视为一个理想的目标。然而,对于忙碌的专业人士来说,实现工作与生活的平衡可能具有挑战性&a…...
3分钟看懂设计模式01:策略模式
一、什么是策略模式 定义一些列算法类,将每一个算法封装起来,并让它们可以互相替换。 策略模式让算法独立于使用它的客户而变化,是一种对象行为型模式。 以上是策略模式的一般定义,属于是课本内容。 在没有真正理解策略模式之…...
数据结构与算法:算法详解
1. 引言 1.1 算法在计算机科学中的地位和重要性 算法是计算机科学的基石,它指导着计算机在解决各种问题时的行为。一个好的算法可以使得问题的解决更加高效、精确和可靠,因此在计算机科学中具有至关重要的地位。 1.2 学习算法的意义和目标 学习算法不…...
AOSP10 替换系统launcher
本文实现将原生的launcher 移除,替换成我们自己写的launcher。 分以下几个步骤: 一、新建一个自己的launcher项目。 1.直接使用android studio 新建一个项目。 2.修改AndroidManifest.xml <applicationandroid:persistent"true"androi…...
视频互动游戏如何暴打海王和舔狗
前言 前2篇文章回答了游戏的可取之处以及不可复制的地方还有对于这一类的情景互动游戏在2024年的发展预言。第三篇主要是回答在一篇中一个留言的读者问的问题“如何暴打海王和舔狗”,求同存异,希望能够跟更多的读者交流与互相学习。 海王和舔狗的特征 …...
大学生多媒体课程学习网站thinkphp+vue
开发语言:php 后端框架:Thinkphp 前端框架:vue.js 服务器:apache 数据库:mysql 运行环境:phpstudy/wamp/xammp等开发背景 (一) 研究课程的提出 (二)学习网站的分类与界定…...
信息系统项目管理师论文分享(质量管理)
水一篇文章。我发现身边考高项的朋友很多都是论文没过,我想着那就把我的论文分享出来,希望能有帮助。 质量管理 摘要 2020年5月,我作为项目经理参加了“某市某医联体的互联网诊疗(互联网医院和远程医疗)平台”的建设…...
Redis实现滑动窗口限流
常见限流算法 固定窗口算法 在固定的时间窗口下进行计数,达到阈值就拒绝请求。固定窗口如果在窗口开始就打满阈值,窗口后半部分进入的请求都会拒绝。 滑动窗口算法 在固定窗口的基础上,窗口会随着时间向前推移,可以在时间内平滑控…...
SQL Server查询计划(Query Plan)——XML查询计划
6.4.3. XML查询计划 SQL Server中,除了通过GUI工具和相关命令获取图形及文本查询计划外,我们还可以通过相关命令获取XML格式的查询计划,这里惯称其为XML查询计划。 SQL Server 2005版本引入了XML查询计划的新特性,其充分吸收了图形及文本查询计划的优势所在,…...
【day02】每天三道 java后端面试题:Java、C++和Go的区别 | Redis的特点和应用场景 | 计算机网络七层模型
文章目录 1. Java、C和 Go 语言的区别,各自的优缺点?2. 什么是Redis?Redis 有哪些特点? Redis有哪些常见的应用场景?3. 简述计算机网络七层模型和各自的作用? 1. Java、C和 Go 语言的区别,各自的…...
【Flink状态管理(八)】Checkpoint:CheckpointBarrier对齐后Checkpoint的完成、通知与对学习状态管理源码的思考
文章目录 一. 调用StreamTask执行Checkpoint操作1. 执行Checkpoint总体代码流程1.1. StreamTask.checkpointState()1.2. executeCheckpointing1.3. 将算子中的状态快照操作封装在OperatorSnapshotFutures中1.4. 算子状态进行快照1.5. 状态数据快照持久化 二. CheckpointCoordin…...
防御保护第八、九、十、十一天笔记
一、内容安全 1、DFI和DPI技术 --- 深度检测技术 DPI是一种基于应用层的流量检测和控制技术,它会对流量进行拆包,分析包头和应用层的内容,从而识别应用程序和应用程序的内容。这种技术增加了对应用层的分析,识别各种应用…...
【TypeScript基础知识点】的讲解
TypeScript基础知识点 TypeScript基础知识点 TypeScript基础知识点 TypeScript 是一种由 Microsoft 开发和维护的开源编程语言,它是 JavaScript 的一个超集,添加了可选的静态类型和基于类的面向对象编程,以下是一些 TypeScript 的基础知识点…...
牛客周赛 Round 34 解题报告 | 珂学家 | 构造思维 + 置换环
前言 整体评价 好绝望的牛客周赛,彻底暴露了CF菜菜的本质,F题没思路,G题用置换环骗了50%, 这大概是唯一的亮点了。 A. 小红的字符串生成 思路: 枚举 a,b两字符在相等情况下比较特殊 a, b input().split() if a b:print (2)print (a)pri…...
LeetCode13 罗马数字转整数
题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&…...
【Hudi】Upsert原理
17张图带你彻底理解Hudi Upsert原理 1.开始提交:判断上次任务是否失败,如果失败会触发回滚操作。然后会根据当前时间生成一个事务开始的请求标识元数据。2.构造HoodieRecord Rdd对象:Hudi 会根据元数据信息构造HoodieRecord Rdd 对象…...
信息系统服务:演绎数字时代的征程
信息系统服务作为数字化时代的基石,已经在人类社会的各个领域发挥着重要作用。本文将从信息系统服务的起源、发展和演化过程,通过生动的例子和准确客观的历史事实,探讨信息系统服务对人类社会的影响与变革。 1. 起源:信息处理的初…...
rust连接postgresql数据库
引入crate: postgres "0.19.7" use postgres::{Client, NoTls, error::Error};fn main() -> Result<(), Error> {let mut client Client::connect("hostlocalhost port5432 dbnamexxxxdb userpostgres passwordxxxxxx", NoTls).un…...
[面试] 什么是死锁? 如何解决死锁?
什么是死锁 死锁,简单来说就是两个或者多个的线程在执行的过程中,争夺同一个共享资源造成的相互等待的现象。如果没有外部干预线程会一直阻塞下去. 导致死锁的原因 互斥条件,共享资源 X 和 Y 只能被一个线程占用; 请求和保持条件…...
从零构建装饰艺术视觉系统:Midjourney + Figma联动作业流,1小时产出完整海报/包装/UI组件库
更多请点击: https://intelliparadigm.com 第一章:装饰艺术视觉系统的美学内核与技术定位 装饰艺术(Art Deco)视觉系统并非仅关乎复古纹样或金色渐变,其本质是几何秩序、工业节奏与人文表现力的三重耦合。在现代前端架…...
终极MifareOneTool使用指南:零基础玩转MIFARE经典卡的Windows图形化神器
终极MifareOneTool使用指南:零基础玩转MIFARE经典卡的Windows图形化神器 【免费下载链接】MifareOneTool A GUI Mifare Classic tool on Windows(停工/最新版v1.7.0) 项目地址: https://gitcode.com/gh_mirrors/mi/MifareOneTool 想要…...
开源大模型适配器Basaran:一键兼容OpenAI API,无缝集成私有化部署
1. 项目概述:当开源大模型遇上“文本补全”接口 如果你最近在折腾开源的大型语言模型(LLM),比如 LLaMA、Falcon 或者国内的 ChatGLM、Qwen 系列,你肯定遇到过这样的场景:模型本身能力很强,但它…...
KNN算法调参实战:如何为你的数据选择合适的距离度量(从闵可夫斯基距离说起)
KNN算法调参实战:如何为你的数据选择合适的距离度量(从闵可夫斯基距离说起) 在机器学习项目中,K近邻(KNN)算法因其简单直观而广受欢迎。但许多实践者往往忽略了一个关键环节——距离度量的选择。当你在Scik…...
让经典游戏在现代Windows系统上流畅运行:DDrawCompat兼容性解决方案
让经典游戏在现代Windows系统上流畅运行:DDrawCompat兼容性解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirr…...
Translumo终极指南:3个简单技巧掌握实时屏幕翻译
Translumo终极指南:3个简单技巧掌握实时屏幕翻译 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否曾在游…...
从“记录系统”到“智能系统” From “System of Record” to “System of Intelligence” —— A16Z
From “System of Record” to “System of Intelligence” 从“记录系统”到“智能系统” https://www.a16z.news/p/from-system-of-record-to-system-of Here’s one way you can think about system of record stickiness: For a long time, the valuable part of social…...
终极指南:如何为yt-dlp-gui扩展新的视频平台支持
终极指南:如何为yt-dlp-gui扩展新的视频平台支持 【免费下载链接】yt-dlp-gui Windows GUI for yt-dlp 项目地址: https://gitcode.com/gh_mirrors/yt/yt-dlp-gui 你是否曾遇到过想要下载某个小众视频平台的视频,却发现yt-dlp-gui无法识别链接&am…...
肿瘤样本SV分析避坑指南:Delly somatic检测中那些容易忽略的过滤与注释细节
肿瘤样本SV分析避坑指南:Delly somatic检测中那些容易忽略的过滤与注释细节 在癌症基因组学研究中,结构变异(SV)的准确检测对于理解肿瘤发生机制和寻找潜在治疗靶点至关重要。Delly作为一款广泛使用的SV检测工具,其som…...
基于代理建模与系统仿真的唐代政治制度数字重构
1. 项目概述与核心价值最近在开源社区里,我注意到一个名为“Tang-Political-System”的项目,它的名字直译过来是“唐代政治制度”。作为一个对历史、制度设计以及开源协作模式都抱有浓厚兴趣的开发者,这个项目立刻引起了我的注意。它并非一个…...
