- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM32实现万年历STM32实现万年历
STM32学习笔记一 竹天笑
实现的功能:
1、日历功能。
2、数字和模拟时钟功能。
图1(为LCD截屏保存在SD卡中的图像)
最终界面如下,但还存在不少漏洞。1、没有更改时间的设置;2、只有节气显示没有节假日显示3、背景不是用uCGUI画的,是在PS中画好然后存在SD卡中,然后显示的BMP格式图像。
要点分析:
1、STM32自带了RTC时钟计数器,从0开始计数到232。每一个计数代表秒计数,每六十个计数代表分计数,以此类推。24(小时)*60(分钟)*60(秒钟)=86400代表一天的计数时间。假设当前计数为count,count/86400得到计数的天数,根据这个得到年月日。Count%86400得到时分秒。
2、一些根据1中得到的年月日时分秒,进行计算的程序有:阳历转阴历,闰年判断,节气判断,星期几计算,当前月有多少天等等。
3、模拟时钟的绘制:时钟指针运动算法、屏幕重绘方法、RTC消息、画笔/画刷等。指针运动算法和屏幕重绘方法是本程序主要难点所在。(以下参照百度文库之模拟时钟)
不论何种指针,每次转动均以π/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。计算指针端点(x, y)的公式如下:
x =圆心x坐标 + 指针长度 * cos (指针方向角)
y =圆心y坐标 + 指针长度 * sin (指针方向角)
注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。
由于屏幕的重绘1秒钟一次,如果采用全屏删除式重绘则闪烁十分明显,显示效果不佳。本程序采用非删除式重绘,假定指针将要移动一格,则先采用背景色(这里是白色)重绘原来指针以删除原来位置的指针,再采用指针的颜色在当前位置绘制指针(如果指针没有动,则直接绘制指针,此句在程序中被我删除,具体原因,为数据截断导致一些误差)。
另外,秒表为RTC一秒钟定时计数。
程序分析:
uCGUI+uCOS,一共三个任务:主处理任务、触摸屏任务、秒更新任务。
void App_UCGUI_TaskCreate (void)
{
CPU_INT08U os_err;
os_err = os_err;
Clock_SEM=OSSemCreate(1); //建立秒更新中断的信号量
//硬件平台初始化
BSP_Init();
//主处理任务---------------------------------------------------------
os_err = OSTaskCreateExt(AppTaskUserIF,
(void *)0,
(OS_STK *)AppTaskUserIFStk[APP_TASK_USER_IF_STK_SIZE-1],
APP_TASK_USER_IF_PRIO,
APP_TASK_USER_IF_PRIO,
(OS_STK *)AppTaskUserIFStk[0],
APP_TASK_USER_IF_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);
//触摸屏任务---------------------------------------------------------
os_err = OSTaskCreateExt(AppTaskKbd,
(void *)0,
(OS_STK *)AppTaskKbdStk[APP_TASK_KBD_STK_SIZE-1],
APP_TASK_KBD_PRIO,
APP_TASK_KBD_PRIO,
(OS_STK *)AppTaskKbdStk[0],
APP_TASK_KBD_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);
//秒更新任务
os_err = OSTaskCreateExt(Clock_Updata,
(void *)0,
(OS_STK *)Clock_Updata_Stk[Clock_Updata_STK_SIZE-
您可能关注的文档
最近下载
- 2024-2025年中国企业出海发展研究白皮书.docx
- 2025年3月-7月中央八项规定精神学习全规划+在理论中心组学习贯彻中央八项规定精神及实施细则交流研讨发言材料.doc VIP
- 水污染控制技术题库及答案-水污染控制工程题库.docx
- 1_《油气管道工程相控阵超声检测技术规定》发布稿.doc VIP
- 场景文件的生成方法、装置、电子设备及存储介质与流程.docx VIP
- 视频生成方法、视频生成装置、电子设备及存储介质.pdf VIP
- 人教版小学数学三年级下册第五单元《面积》整体教学设计.doc
- 某道路运输从业人员安全管理制度(参考).doc VIP
- 2021抽水试验规程.docx
- 2025年一级建造师建筑实务核心简答考点背诵精华汇编.docx
文档评论(0)