Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RTC
RA8-M85-vision-board
[Vision Board创客营]RTC模块实践
发布于 2024-04-27 21:36:40 浏览:128
订阅该版
作为一个新手小白,很荣幸能加入Vision Board创客营,加入到这次测评任务中,感谢发烧友&RT-Thread,感谢李昂导师的指导和帮助,感谢RBB君在B站更新的视频教程。 **一,简介** 1.硬件介绍 开发板描述: Vision Board搭载全球首颗 480 MHz Arm Cortex-M85芯片,拥有Helium和TrustZone技术的加持。SDK包里集成了OpenMV机器视觉例程,配合MicroPython 解释器,使其可以流畅地开发机器视觉应用。Vision Board具有以下主要特点: 强大的处理性能:Vision Board搭载了全球首款基于 ARM Cortex-M85 架构的瑞萨电子RA8 MCU,6.39 CoreMark/MHz,可以快速而高效地运行机器视觉算法,实现图像处理、等功能。 完整支持OpenMV生态:Vision Board完全兼容OpenMV开发平台,用户可以直接使用OpenMV IDE进行编程和开发,利用丰富的API和库函数进行图像处理和计算机视觉任务。 友好的学习环境:提供简洁易用的开发环境和示例项目,带领初学者快速上手机器视觉、GUI等应用。同时具有丰富的文档资料供给开发者学习。 可扩展性:丰富的扩展接口,如摄像头、MIPI-DSI、RGB666、树莓派兼容IO、BTB拓展接口等,用户可以根据自己的需求连接其他外设或模块,如以太网、CAN/LIN、传感器、执行器等,实现更复杂的应用场景。 **二,相关代码** 1,预先进行数组配置之后,配置Init函数 ```c void MyRTC_Init(void) { /*开启时钟*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //开启PWR的时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ENABLE); //开启BKP的时钟 /*备份寄存器访问使能*/ PWR_BackupAccessCmd(ENABLE); //使用PWR开启对备份寄存器的访问 if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5) //通过写入备份寄存器的标志位,判断RTC是否是第一次配置 //if成立则执行第一次的RTC配置 { RCC_LSEConfig(RCC_LSE_ON); //开启LSE时钟 while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) != SET); //等待LSE准备就绪 RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //选择RTCCLK来源为LSE RCC_RTCCLKCmd(ENABLE); //RTCCLK使能 RTC_WaitForSynchro(); //等待同步 RTC_WaitForLastTask(); //等待上一次操作完成 RTC_SetPrescaler(32768 - 1); //设置RTC预分频器,预分频后的计数频率为1Hz RTC_WaitForLastTask(); //等待上一次操作完成 MyRTC_SetTime(); //设置时间,调用此函数,全局数组里时间值刷新到RTC硬件电路 BKP_WriteBackupRegister(BKP_DR1, 0xA5A5); //在备份寄存器写入自己规定的标志位,用于判断RTC是不是第一次执行配置 } else //RTC不是第一次配置 { RTC_WaitForSynchro(); //等待同步 RTC_WaitForLastTask(); //等待上一次操作完成 } } ``` 2,延时函数配置 ```c void Delay_us(uint32_t xus) { SysTick->LOAD = 72 * xus; //设置定时器重装值 SysTick->VAL = 0x00; //清空当前计数值 SysTick->CTRL = 0x00000005; //设置时钟源为HCLK,启动定时器 while(!(SysTick->CTRL & 0x00010000)); //等待计数到0 SysTick->CTRL = 0x00000004; //关闭定时器 } ``` ```c void Delay_ms(uint32_t xms) { while(xms--) { Delay_us(1000); } } ``` **三,项目实践** 拿着从垃圾堆里翻出来的LCD和蜂鸣器,做了个小闹钟程序,主函数代码如下:while (1) ```c while (1) { MyRTC_ReadTime(); //RTC读取时间,最新的时间存储到MyRTC_Time数组中 Key_Control(); //调用按键控制函数 OLED_ShowNum(1, 6, MyRTC_Time[0], 4); //显示MyRTC_Time数组中的时间值,年 OLED_ShowNum(1, 11, MyRTC_Time[1], 2); //月 OLED_ShowNum(1, 14, MyRTC_Time[2], 2); //日 OLED_ShowNum(2, 6, MyRTC_Time[3], 2); //时 OLED_ShowNum(2, 9, MyRTC_Time[4], 2); //分 OLED_ShowNum(2, 12, MyRTC_Time[5], 2); //秒 if(Flag_Count) //正在计时,则显示闹钟响起剩余时间 { Alarm_Time_Rest = Alarm_CNT-RTC_GetCounter()+1; //计算闹钟响起剩余时间 if(Alarm_Time_Rest > Alarm_Time) //防止溢出错误 Alarm_Time_Rest = 0; OLED_ShowNum(3,7,Alarm_Time_Rest/3600,2); //显示剩余小时 OLED_ShowNum(3,10,(Alarm_Time_Rest%3600)/60,2); //显示剩余分钟 OLED_ShowNum(3,13,(Alarm_Time_Rest%3600)%60,2); //显示剩余秒 if(RTC_GetFlagStatus(RTC_FLAG_ALR) == 1) //闹钟时间到,检查标志位为1 { RTC_ClearFlag(RTC_FLAG_ALR); //清除标志位 Flag_Count = 0;Alarm_Time = 0; //重置相关参数 Hour = 0;Min = 0; Sec = 0; Buzzer_ON(); //打开蜂鸣器 OLED_ShowString(4,1,"Time Out"); } else //闹钟时间未到 { OLED_ShowString(4,1,"Counting"); //显示正在计时 } } else //不在计时,则显示需要设定的闹钟时间 { OLED_ShowNum(3,7,Hour,2); OLED_ShowNum(3,10,Min,2); OLED_ShowNum(3,13,Sec,2); } ``` **四,图片** ![RTC.jpg](https://oss-club.rt-thread.org/uploads/20240428/24fb313e9d2f1444a90e73da9ffe75d0.jpg.webp) 最后,也算一次致歉,对于RTC测评我并没有什么好的思路。可能受限于我的学识,我有一些想法留存于脑海没能实现。今后有机会的话我可能会重写一篇测评文章,如果有修改意见也欢迎指出
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
闲且听风
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
RTC驱动框架几点建议
2
求助:RTT在STM32F407上使用内置的RTC设置日期需重启生效,设置时间即时生效,有遇到同样问题的吗?
3
[新人试水] LPC1768 Nano3_9 添加RTC
4
STM32 关于RTC的问题
5
stm32f4xx-HAL BSP的RTC设置不对
6
关于STM32的RTC设置年份不正确的问题
7
RTT的RTC驱动调试
8
rtc驱动中的bkp模块起不到防止时间的重新设置
9
rtc时钟跑十几个小时后,比实际时间快几秒怎么解决
10
stm32如何断电之后开发板rtc时间继续往前跑
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
ADC
BSP
中断
flashDB
编译报错
socket
keil_MDK
GD32
Debug
MicroPython
msh
ulog
SFUD
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
出出啊
1506
个答案
339
次被采纳
小小李sunny
1424
个答案
281
次被采纳
张世争
741
个答案
162
次被采纳
crystal266
540
个答案
157
次被采纳
whj467467222
1218
个答案
146
次被采纳
本月文章贡献
聚散无由
1
篇文章
3
次点赞
Hlafklio
1
篇文章
2
次点赞
YDPB_5935
1
篇文章
2
次点赞
uniquechuck
1
篇文章
1
次点赞
Z_Y
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部