基于ARM的万历.doc
《基于ARM的万历.doc》由会员分享,可在线阅读,更多相关《基于ARM的万历.doc(16页珍藏版)》请在三一办公上搜索。
1、嵌入式系统课程设计报告 基于ARM的万年历系统 院 系: 机电学院 学生姓名: 专 业: 应用电子技术教育 班 级: 指导教师: 田丰庆 付广春 完成时间: 2013年3月29日 目录1 引言12 STM32芯片RTC时钟介绍13 程序运行结果23.1 STM32管脚介绍23.2 STM32复位电路和时钟设计24 总体设计框图35 程序运行结果图示46 程序流程图57 总结体会58 参考文献6附录一:总体电路图7附录二:源程序8基于ARM的万年历系统摘要:本设计选择STM32为核心控制元件,设计了用RTC定时器实现万年历的控制与设计。程序使用C语言进行编程,能动态显示当前时间,包括年、月、日、
2、时、分、秒,并且用串口助手显示。关键词:STM32 ARM 时钟 1 引言 随着科技的发展,嵌入式系统广泛应用于工业控制和商业管理领域,在多媒体手机、袖珍电脑,掌上电脑,车载导航器等方面的应用,更是极大地促进了嵌入式技术深入到生活和工作各个方面。嵌入式系统主要由嵌入式处理器、相关支撑硬件及嵌入式软件系统组成。本文介绍基于STM32F103R6T6的嵌入式微处理器的万年历设计,并且在液晶上显示。2 STM32芯片RTC时钟介绍STM32的实时时钟(RTC)是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可以提供时钟日历的功能,修改计数器的值可以重新设置系统当前的时间和日
3、期。STM32F10x系列微控制器片上内置的RTC模块,主要特性如下:(1) 可编程的预分频系数,分频系数最高位220。(2) 32位的可编程计数器,可用于长程时间段的测量。(3) 两个单独的时钟:用于APB1接口的PLCK1和RTC时钟(此时RTC时钟的频率必须小于PCLK1时钟的四分之一以上)。(4) 可以选择一下三种RTC的时钟源: HSE(high speed external)时钟除以128,即高速外部时钟,接石英/陶瓷谐振器,或者接外部时钟源,频率范围为416MHz。 LSI(low speed internal)振荡器时钟,即低速内部时钟,频率为40kHz。 LSE(low sp
4、eed external)振荡器时钟,即低速外部时钟,接石英晶体,频率为32.768kHz。(5)2钟独立的复位类型: APB1接口由系统复位。 RTC核(预分频器、闹钟、计数器和分频器)只能由备份域复位。(6)3个专门的可屏蔽中断:闹钟中断,用来产生一个软件可编程的闹钟中断。秒中断,用来产生一个可编程的周期性中断信号(最长可达1s)。溢出中断,检测内部可编程计数器溢出并回转为0的状态 (7)STM32侵入检测: TPAL=0时启动侵入检测TAMPER引脚前已经为高电平,一旦启动检测功能,则会产生一个额外的侵入事件。 TPAL=1时启动侵入引脚TAMPER前该引脚为低电平,一旦启动检测功能,则
5、会产生一个额外的侵入事件。 检测TAMPER上的点品变化,就会把备份寄存器的内容清空,以保护重要的数据不被非法盗取。3 STM32最小系统电路3.1 STM32芯片管脚介绍STM32F103R6T6管脚示意图,如图1所示。图1 STM32F103R6T6管脚示意图3.2 STM32复位和时钟电路设计 此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图2(右)所示:其中7脚为STM32的复位端。时钟电路如图2(左)所示:晶振采用的是8MHz和32.786KHz,8MKz分别接STM32的5脚和6脚,32.786KHz分别接STM32的3脚和4脚。图2
6、STM32复位和时钟电路4 总体设计框图 本电路主要由3大部分电路组成:ARM最小系统电路、时钟显示电路和闹钟警报电路(本设计用LED灯指示)。其中ATM最小系统主要由复位电路和时钟电路组成。在该设计中,闹钟提醒由LED灯代替,当闹钟时间到的话,LED灯亮,延时设定的时间后自动关闭。总体设计方框图,如图3所示。STM32 复位电路串口显示 输入时间 时钟电路图3总体设计方框图5 程序运行结果如图4所示图4 程序运行结果6 程序流程图 程序流程图,如图5所示。 图5 程序主流程和时间程序流程图7 总结与体会通过这次万年历的设计,使我对ARM有了更深的理解。刚开始拿到题提目,我先是查找相关资料,从
7、图书馆和网上找到相关的课题,参考借鉴别人的设计,从而理清我们设计的思路。此次作业设计大致可以分为两部分,电路图部分和程序编程部分,其中最有难度的是程序的编写与调试。在编写程序的过程中,我遇到了各种各样的问题,工程之间的结合,对于其中的错误怎样解决,需要配置什么,更改哪里等等。对于ARM我学的很浅,编程遇到问题不知道如何解决,我知道这个是我的弱点,但在这两周的课程设计中,用Keil uVision4在ARM开发板上进行程序调试,遇到问题解决问题,在这个过程中我收获了不少。 参考文献1 彭刚、秦志强等.基于ARM Cortex-M3的STM32系列嵌入式微控制器应用实践M.北京:电子工业出版社2
8、李宁.基于MDK的STM32处理器开发应用M.北京航空航天大学出版社,2008.3 王永红、徐炜、赫立平.STM32系列ARM Cortex-M3微控制器原理与实践M.北京航空航天大学出版社,2008.4 ARM Limited.Cortex-M3 Technical Reference Manual(r2p0). ARM DDI 0037G 2008.5 附录一:总体电路图附录二:程序#include stm32f10x.h#include stdio.h #include calendar.h#include date.h_IO uint32_t TimeDisplay = 0;void
9、RCC_Configuration(void);void NVIC_Configuration(void);void GPIO_Configuration(void);void USART_Configuration(void);int fputc(int ch, FILE *f);void RTC_Configuration(void);void Time_Regulate(struct rtc_time *tm);void Time_Adjust(void);void Time_Display(uint32_t TimeVar);void Time_Show(void);u8 USART_
10、Scanf(u32 value);#define RTCClockSource_LSEu8 const *WEEK_STR = 日, 一, 二, 三, 四, 五, 六;u8 const *zodiac_sign = 猪, 鼠, 牛, 虎, 兔, 龙, 蛇, 马, 羊, 猴, 鸡, 狗;struct rtc_time systmtime;int main() RCC_Configuration(); NVIC_Configuration(); GPIO_Configuration(); USART_Configuration(); if (BKP_ReadBackupRegister(BKP_D
11、R1) != 0xA5A5) printf(rnn RTC not yet configured.); RTC_Configuration();printf(rn RTC configured.); Time_Adjust();BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);elseif (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET) printf(rnn Power On Reset occurred.);else if (RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET) p
12、rintf(rnn External Reset occurred.); printf(rn No need to configure RTC.);RTC_WaitForSynchro();RTC_ITConfig(RTC_IT_SEC, ENABLE);RTC_WaitForLastTask(); #ifdef RTCClockOutput_Enable RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); PWR_BackupAccessCmd(ENABLE); BKP_TamperPinCmd(D
13、ISABLE); BKP_RTCOutputConfig(BKP_RTCOutputSource_CalibClock);#endif RCC_ClearFlag(); Time_Show();void RCC_Configuration()SystemInit();RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);void NVIC_Configuration() NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(N
14、VIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);void GPIO_Configuration() GPIO_InitTypeDef
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM 万历
链接地址:https://www.31ppt.com/p-4148021.html