学习笔记day1 基于stm32f1系列的RTC USART 仅供借鉴

学习笔记day1 基于stm32f1系列的RTC USART 仅供借鉴

  • 1.1USART 概述
  • 1.2USART 代码配置参考 优先级配置参考
    • GPIO配置 RCC时钟选择
    • USART中断服务配置
  • 2.1RTC概述
  • 2.2RTC编程配置 仅供参考
    • RTC中断 NVIC优先级配置 仅供参考

1.1USART 概述

在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。还可以使用DMA方式,实现高速数据通信。
USART通过3个引脚与其他设备连接在一起,任何USART双向通信至少需要2个引脚:接受数据输入(RX)和发送数据输出(TX)。RX: 接受数据串行输入。通过过采样技术来区别数据和噪音,从而恢复数据。TX: 发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。

1.2USART 代码配置参考 优先级配置参考

学习笔记day1 基于stm32f1系列的RTC USART 仅供借鉴_第1张图片

GPIO配置 RCC时钟选择

学习笔记day1 基于stm32f1系列的RTC USART 仅供借鉴_第2张图片

USART中断服务配置

可以在stm32f10x_it.c里面编写,也可以在usart.c或者主函数自己定义编写,不过记得删除 重复定义的中断函数。
学习笔记day1 基于stm32f1系列的RTC USART 仅供借鉴_第3张图片

上面if是用于测试usart成功与否 点亮邓,仅供参考 简单的小测试

2.1RTC概述

实时时钟( RTC)是一个独立的定时器。 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以
防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域( BKP)写保护。RTC 由两个主要部分组成(见下图)。第一部分(APB1 接口)用来和 APB1 总线相连。此单元还包含一组 16 位寄存器,可通过 APB1 总线对其进行读写操作。 APB1 接口由 APB1 总线时钟驱动,用来与 APB1 总线接口。另一部分(RTC 核心)由一组可编程计数器组成,分成两个主要模块。第一个模块是 RTC 的预分频模块,它可编程产生最长为 1 秒的 RTC 时间基准 TR_CLK。 RTC 的预分频模块包含了一个 20 位的可编程分频器(RTC 预分频器)。如果在 RTC_CR 寄存器中设置了相应的允许位,则在每个 TR_CLK 周期中 RTC 产生一个中断(秒中断)。第二个模块是一个 32 位的可编程计数器,可被初始化为当前的系统时间,一个 32 位的时钟计数器,按秒钟计算,可以记录 4294967296秒,约合 136 年左右,作为一般应用,这已经是足够了的。RTC 还有一个闹钟寄存器 RTC_ALR,用于产生闹钟。系统时间按 TR_CLK 周期累加并与存储在 RTC_ALR 寄存器中的可编程时间相比较,如果 RTC_CR 控制寄存器中设置了相应允许实时时钟( RTC)是一个独立的定时器。 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以
防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域( BKP)写保护。
RTC 由两个主要部分组成(见下图)。第一部分(APB1 接口)用来和 APB1 总线相连。此单元还包含一组 16 位寄存器,可通过 APB1 总线对其进行读写操作。 APB1 接口由 APB1 总线时钟驱动,用来与 APB1 总线接口。
另一部分(RTC 核心)由一组可编程计数器组成,分成两个主要模块。第一个模块是 RTC 的预分频模块,它可编程产生最长为 1 秒的 RTC 时间基准 TR_CLK。 RTC 的预分频模块包含了一个 20 位的可编程分频器(RTC 预分频器)。如果在 RTC_CR 寄存器中设置了相应的允许位,则在每个 TR_CLK 周期中 RTC 产生一个中断(秒中断)。第二个模块是一个 32 位的可编程计数
器,可被初始化为当前的系统时间,一个 32 位的时钟计数器,按秒钟计算,可以记录 4294967296秒,约合 136 年左右,作为一般应用,这已经是足够了的。RTC 还有一个闹钟寄存器 RTC_ALR,用于产生闹钟。系统时间按 TR_CLK 周期累加并与存储在 RTC_ALR 寄存器中的可编程时间相比较,如果 RTC_CR 控制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断。

2.2RTC编程配置 仅供参考

学习笔记day1 基于stm32f1系列的RTC USART 仅供借鉴_第4张图片

RTC中断 NVIC优先级配置 仅供参考

学习笔记day1 基于stm32f1系列的RTC USART 仅供借鉴_第5张图片
中断配合usart 串口助手 测试输出的时间准确性。
以上资料代码仅供参考,如有改进 问题 敬请留言/

你可能感兴趣的:(嵌入式stm,开发,物联网,嵌入式,stm32,物联网)