第8周 定时器与日历时钟

本文详细介绍了如何使用STM32的定时器实现精确的时间控制,包括5秒间隔的串口发送和2秒间隔的LED闪烁。同时,通过实时时钟RTC学习了如何读取和设置STM32的日期时间,并实现每秒更新的串口输出,增加了显示星期的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、任务目的
​1. 之前作业中的延时功能都是通过循环、delay/Hal_delay函数等实现,本次作业通过定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。请设置一个5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁。
2. 了解实时时钟RTC的原理。STM32芯片自带RTC,因此不须像其他MCU需外接RTC模块。请编程实现STM32的日历读取、设置和输出。要求:
1)读取RTC初始时间,验证是否为 1970年1月1日零分零秒;
2)将RTC时间调整为当前时间,并以 2021年x月x日x分x秒的格式从串口输出(或输出到OLED屏),每1s改变一次;
3)如果输出内容中需加入“星期x”,请修改代码。
二、​任务一
​1.新建stm32f103c8项目
2.启动时钟
打开外部时钟,点击“System Core” ,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。
4072ebb1d4e74afc858f5c23089f7621.jpg
选择调试接口,选择SYS。,在右侧弹出的菜单栏中选择“Serial Wire”
0ac3454d0c104525b4936bc55cffc9b2.jpg
3.配置IO
配置PC15,并命名为D1。这里我们只使用一个LED。
57cec927f86a4dcc902321e860b09eb7.jpg
4.配置定时器2,定时器3
这里我们使用定时器2来实现定时LED闪烁的功能。如图所示,依次点击位置1,选中定时器2;位置2,配置定时器2的时钟源为内部时钟;位置3,分频系数为71,向上计数模式,计数周期为5000,使能自动重载模式。
e0722afa455d465b89786e730d93d435.jpg
使用定时器3进行串口通信控制,配置同上
fd03245f02484730b95ede328348fe14.jpg
5.配置中断。
如下图所示,开启定时器2,3的中断。
966f940af9874538bbdf2e699ab434a7.jpg
如下图所示,生成定时器2,定时器3中断优先级配置代码。
ebffa32d0a6345729353fee1ecb94ac8.jpg
6.配置USART1
打开USART1,设置异步通信
a7968a65b7a64ee3b772dfdb16f2479e.jpg
7.配置时钟
05db939254f34930aec9c12cb459499c.jpg
8.项目设置
37f0389b589d47ad898c6da34f6b952f.jpg
2db4990a8d2e4460a8a97957db692339.jpg
9.keil中修改代码
打开两个定时器
9d5424d4d5ea4aa1b439ffdbeaf4fa4b.jpg
      HAL_TIM_Base_Start_IT(&htim2);
    HAL_TIM_Base_Start_IT(&htim3);
 在main.c文件中添加串口输出代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值