当前位置: 首页 > news >正文

惠州 网站建设app开发抖音代运营可以相信吗

惠州 网站建设app开发,抖音代运营可以相信吗,郑州网站网络营销,场所码小程序怎么做文章目录 前言1. RTC概念1.1 RTC的时钟信号源1.2 预分频器1.3 实时时钟与日历数据1.4 周期性自动唤醒1.5 可编程闹钟 2. RTC相关中断3. STM32CubeMX配置3.1 时钟配置3.2 引脚配置3.3 RTC配置3.3.1 模式选择3.3.2 RTC基本参数配置3.3 中断配置 4. 代码编写总结 前言 RTC的功能有… 文章目录 前言1. RTC概念1.1 RTC的时钟信号源1.2 预分频器1.3 实时时钟与日历数据1.4 周期性自动唤醒1.5 可编程闹钟 2. RTC相关中断3. STM32CubeMX配置3.1 时钟配置3.2 引脚配置3.3 RTC配置3.3.1 模式选择3.3.2 RTC基本参数配置3.3 中断配置 4. 代码编写总结 前言 RTC的功能有很多这里主要介绍RTC的周期唤醒和闹钟功能。 本篇博客先阐述RTC的概念以及周期唤醒和闹钟的原理并对STM32CubeMX的配置参数进行阐述最后结合LED与BEEP进行效果演示。 最终效果 每分钟的第5秒翻转LED0状态. 每分钟的第30秒翻转BEEP的状态。 每秒翻转LED1状态。 1. RTC概念 RTCReal-Time Clock,实时时钟。它是由时钟信号驱动的日历时钟提供日期和时间数据。在STM32F407ZET6里面有一个RTC由普中的开发板后面的电源VBAT供电这个的好处在于它可以提供不间断的日期时间数据。不像我们写程序配置的时间一般我们关闭了开发板的电源就丢失了。这个RTC其实在我使用中觉得最有用的大概就是使用ssh连接linux系统的时候往里面传文件可以看到文件的修改日期。如果没有这个RTC传输进嵌入式系统的文件的修改日期大概率就是系统最初始的时间比如1970-1-1。 RTC有两个可编程的闹钟库函数中就是AlarmA和AlarmB。可以设定任意组合和重复性闹钟有一个周期唤醒单元可以作为一个普通定时器使用还具有时间戳和入侵检测功能。这篇博客就写的是前半部分后面会再写一篇后续的功能。 1.1 RTC的时钟信号源 我们RTC的时钟是哪里来的打开看STM32CubeMX看一下时钟配置就知道了 通过上图可以看到RTC的时钟来源有三个 LSI:MCU内部的32kHz时钟信号。 LSE:MCU外接的32.768kHz时钟信号。 HSE_RTC:MCU外接的高速晶振HSE经过2到31分频后的时钟信号。 在实际的时钟源选择上我们一般选择LSE。因为外接的32.768kHz的时钟经过多次二分频后就可以得到精确的1Hz的时钟信号转成时间就是1s一个周期。 STM32CubeMx只给出RTC的时钟来源RTC的具体框图如下。 1.2 预分频器 要想实现输出不同频率的时钟就取决于预分频器的系数。对于给定的初始RTC时钟源信号只有经过预分频器的分频才可以在指定引脚输出我们想要的频率的时钟。 在上图中以32.768kHz的LSE时钟源为例RTC的时钟源经过精密校准后通过异步分频器128分频得到ck_apre为256Hz。256Hz的时钟信号经过同步分频256分频得到1Hz的ck_spre信号。 ck_apre和ck_spre经过一个选择器后可以选择其中一个时钟信号作为RTC_CALIB时钟信号这个时钟信号经过输出控制选择可以输出到复用引脚RTC_AF1也就是可以向外部提供一个256Hz异步分频或1Hz异步同步分频的时钟信号。 1.3 实时时钟与日历数据 上图RTC的总框图中有两个暗部的影子寄存器 RTC_SSR亚秒计数器 RTC_TR时间计数器 RTC_DR日期计数器 系统每隔两个RTCCLK周期就讲当前的日历值复制到影子寄存器中。当程序读取日期时间数据时读取的是影子寄存器的内容而不会影响日历计数器的工作。 本质上我认为影子寄存器就是用来做一个数据备份主要备份的就是亚秒时间日期。 1.4 周期性自动唤醒 我在写定时器TIM的相关博客的时候写到过一个自动重装载值。比如我将该值设定为10那么计数器到10就触发一次事件同时计数器从0开始计数。这个周期自动唤醒的功能也类似。 RTC内有一个16位自动重载递减计数器可以产生周期性的唤醒中断16位寄存器RTC_WURT存储用于设置定时周期的自动重载值。周期唤醒定时器的输入时钟有两个来源 1.同步预分频器输出的clk_spre时钟信号通常是1Hz 2.RTCCLK经过2、4、8、16分频后的时钟信号结合一下RTC的原理框图 一般可以在周期性唤醒中断里读取RTC当前时间。例如设置周期唤醒时钟源为1Hz的ck_spre信号并且每秒中断一次。唤醒中断产生时间信号WUTF这个信号可以配置到复用引脚RTC_AF1。 1.5 可编程闹钟 在STM32F407ZET6中有两个可编程闹钟闹钟A闹钟B。 闹钟的时间和重复方式可以自定义后面STM32CubeMX配置的时候阐述。闹钟触发的时候闹钟A,B分别产生事件信号ALRAF和ALRBF。这两个信号和周期唤醒事件WUTF一起经过一个选择器可以选择一个信号作为输出信号RTC_ALARM再通过输出控制可以输出到复用引脚RTC_AF1。 2. RTC相关中断 我这里只介绍用到的时钟周期唤醒以及闹钟对应的中断名称和ISR。 中断号中断名称说明ISR3RTC_WKUP连接到EXTI 22线的RTC唤醒中断RTC_WKUP_IRQHandler()41RTC_Alarm连接到EXTI 17线的RTC闹钟A和B中断RTC_Alarm_IRQHandler() 两个中断可以触发的中断事件以及对应的回调函数如下表。 中断名称中断事件源中断事件类型输出或输引脚回调函数RTC_Alarm闹钟ARTC_IT_ALRARTC_AF1HAL_RTC_AlarmAEventCallback()RTC_Alarm闹钟BRTC_IT_ALRBRTC_AF1HAL_RTCEx_AlarmBEventCallback()RTC_WKUP周期唤醒RTC_IT_WUTRTC_AF1HAL_RTCEx_WakeUpTimerEventCallback() 对于STM32F407ZET6复用引脚RTC_AF1是引脚PC13,RTC_AF2是引脚PI8。但是只有178个引脚的MCU才有PI8所以普中这款STM32F407开发板上面是没有RTC_AF2只有RTC_AF1。 写到这里其实我们大概已经知道怎么做了。对于最终效果 每分钟的第5秒翻转LED状态. 每分钟的第30秒翻转BEEP的状态。 每秒翻转LED1状态。 我们只需要在调用中断函数的时候翻转一下电平就可以了。 现在的问题是什么时候调用中断怎么判定设置闹钟以及周期唤醒。 下面我们用STM32CubeMX来详细阐述一下。 3. STM32CubeMX配置 3.1 时钟配置 刚才讲到RTC的1Hz的分频最好选择的是时钟源是外部的低速晶振。 3.2 引脚配置 LED和蜂鸣器配置 RTC时钟输出引脚 3.3 RTC配置 这里我们不涉及到时间戳等RTC其他功能只考虑我们用到的周期唤醒和闹钟。 3.3.1 模式选择 对于Timers模块我们需要启用时钟源以及日历。 AlarmA和AlarmB都有三个选项。 Disable禁用 Internal Alarm内部闹钟功能 Routed to AF1闹钟事件信号输出到复用引脚RTC_AF1。 WakeUp也有三个选项。 Disable禁用 Internal WakeUp内部唤醒功能 Routed to AF1闹钟事件信号输出到复用引脚RTC_AF1。 这里注意Routed to AF1这个选项有且只能有一个支持配置。也就是说AlarmA AalarmBWakeUp三种唤醒方式只能支持一种配置到AF1。一旦AF1被占用了那么其他的唤醒方式不能配置输出到AF1。 3.3.2 RTC基本参数配置 General Hour Format: 小时格式可选12h制或者24小时制。 Asynchronous Predivider value:异步分频器值。设置值为0~127对应分频系数1-128。当RTCCLK为32.768kHz时128分频后就是256Hz。 Synchronous Predivider value:同步预分频器。设置值为0~32767对应分频系数为1-32768。256Hz分频后就是1Hz。 Output Polarity:输出极性。闹钟AB以及周期唤醒中断事件信号有效时的输出极性可设置为高电平或低电平。 Output Polarity:输出类型。复用引脚RTC_AF1的输出类型可选开漏输出或者推挽输出。 Calendar Time Data Format:数据格式。可选择二进制格式或者BCD格式。 Hours:初始化时间数据的时。 Minutes:初始化时间数据的分。 Seconds:初始化时间数据的秒。 Day Light Saving: value of hour adjustment:夏令时设置。这里设置为不使用夏令时。啥叫夏令时 Store Operation:存储操作。表示是否已经对夏令时设置做修改。设置为Reset表示未修改夏令时。Set则表示已修改。 Calendar Date 这个分组主要设置的是初始化的日期。 Week Day:周几 Month:几月 Date:几日 Year:几年 唤醒方式设置。 因为AlarmB和AlarmA的设置是一样的我这里方便截图就直接用AlarmB做解释了。 AlarmA/B Hours:时 0-23 Minutes:分 0-59 Seconds:秒 0-59 Sub Seconds:亚秒 0-59 Alarm Mask Date Week day:屏蔽日期。设置为Enable表示屏蔽即闹钟与日期无关。反之有关 Alarm Mask Hours:屏蔽小时。Enable表示闹钟与小时数据无反之有关。 Alarm Mask Minutes:屏蔽分钟。Enable表示闹钟与分钟数据无反之有关。 Alarm Mask Seconds:屏蔽秒。Enable表示闹钟与秒数据无反之有关。 Alarm Sub Second Mask:屏蔽亚秒。Enable表示闹钟与亚秒数据无反之有关。 Alarm Date Week Day Sel:日期形式。有Date和Weekday两种选项。选项Date表示用1-31表示日期。选择后者则表示用Monday到Sunday表示星期几 Alarm Date:日期。1-31或Monday-Sunday。 这里屏蔽日期什么含义具体来说就是我正常设置一个闹钟是哪一天哪一时哪一分哪一秒如果屏蔽了日期那也就是说我每天的固定时分秒都会响闹钟。屏蔽日期与小时则说明每小时的第几分钟第几秒都会响闹钟。以此类推。 Wake UP Wake Up Clock:周期唤醒的时钟源。 Wake Up Counter:唤醒计数器的重载值。设定范围为0-65535。这个就是计数器到达设定值就触发中断接着重新计数。如果这个值设置为0则每个时钟周期中断一次。这里WakeUpClock设置为1HzWakeUpCounter设置为0则表示每秒触发一次中断。 这里WakeUpClock的值是通过分频来获得的。 3.3 中断配置 这里中断这样设置表明周期唤醒的优先级高于闹钟的中断。 4. 代码编写 实现我们想要的电平翻转其实就只需要对3个回调函数做一下处理就行。 每次来一个中断就翻转一下电平 void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc) {HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin); } void HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc) {HAL_GPIO_TogglePin(BEEP_GPIO_Port,BEEP_Pin); } void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc) {HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); }总结 这里WakeUp的输出到RTF_AF1的电平是高电平可以用示波器抓一下看看。我这通过杜邦线引出来看LED只能看到微弱的闪烁。 这篇博客主要是RTC的一些基本概念以及简单运用和TIM定时器相似不过多了很多东西。要对比学习。
http://www.hkea.cn/news/14336321/

相关文章:

  • 如何搭建公司内部网站12306网站建设投标书
  • 网页制作与网站建设实战大全 光盘网站建设中html中关于图片显示的标签有哪些
  • 有哪些做的好的小众网站建设网站推销
  • 网站建设教程论坛wordpress小工具不见了
  • 网站运营培训学校德网站建设
  • oa网站建设推广asp.net mvc做网站
  • 四川网站营销seo什么价格广州微网站建设哪家好
  • 12306网站 花了多少钱建设群辉 wordpress套件
  • 网站访问量免费下ppt课件的网站
  • 建外贸网站哪个好网站建设及推广好学习吗
  • ip开源网站FPGA可以做点什么营销型网站建设公司提供网站建设
  • 基础型网站套餐中国外包公司
  • wordpress 站点群网站开发语言哪一种好些
  • 网站建设目的定位构建自己最出色的wordpress主题
  • 小米手机官方网站免费的舆情网站不需下载
  • 购物网站app推广方案淘宝客网站做app
  • 网站查询域名如何提高wordpress后台的访问速度
  • 电商网站建设 问题与解决方案阜宁网站建设服务商
  • 百度新闻源网站有哪些qq群短链接生成
  • 关于推进公司网站开发的请示做淘宝客网站会犯法吗
  • 网站建设客户常见问题多媒体展厅公司
  • 柳州城乡建设管理局网站网络营销有哪些营销方式
  • 网站技术解决方案是什么红色系 网站
  • 电商设计网站有哪些功能下载网站模板
  • 如何做带后台的网站拼多多网站怎么做的
  • 网站备案下来以后怎么做网页南京软件网站建设公司
  • 用jsp做校园网站宜昌十堰网站建设哪家好
  • 不备案 网站 盈利网架公司有哪些公司
  • 如何把网站放到域名上wordpress加底部进度条
  • 有没有做装修中介的网站常州市金坛区网站建设