


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中南民族大学嵌入式技术与应用课程设计报告题目串口数字时钟设计学院计算机科学学院专业自动化 班级自动化四班姓名肖映彩 学号08064112指导教师张志俊、田微、李薇、姚为2011年11月14日教师评语:通过本课程的学习,结合自动化专业人才培养方案 (2009版),独立完成课 程设计,并撰写课程设计报告,要求:1第8周:结合自己将来的研究或工作方向,选择自己感兴趣的课题;2第9周:根据课题要求,阅读、收集、整理相关参考资料及产品用户手册, 拟出设计方案。并分析该设计的应用及其应用领域,要有一定的前瞻性;3第10-11周:实施设计方案; 硬件设计可以实验室现有的实验箱为基础(可外部扩展)进行,也可利
2、用 自购的开发板; 配合硬件进行软件设计,在实现题目要求的功能基础上,尽可能增加新 功能,使设计更完善; 软硬件联调,应充分发挥软硬协同设计思想的作用,不断完善系统,并 记录调试过程及结果。4第12周:将设计交于指导老师验收,并进行答辩。总结该设计的主要内 容及主要思想,撰写设计报告;5第13周:交课程设计报告。说明:(1) 此为本课程设计考查的书面报告,占总成绩40%(2) 内容原创、真实,不得雷同,否则 无报告成绩;(3) 严格按照科技论文规范写作,字数为 3000-4000字,摘要(75-150字)、关键词(3-5个),格式参见“中南民族大学本科毕业论文(设计)规范化要求”、“计算机科学
3、学院本科毕业论文(设计)规范化要求”和“论文格式及写作指南”; 正文应包含以下内容: 设计概述:设计需求,设计原理,设计框图及描述 硬件设计:硬件电路及描述 软件设计:程序流程图及描述,主要程序说明 调试与结果:调试过程,测试、结果及描述 总结:设计总结(3) 广泛收集并阅读相关参考文献,参考文献不少于4篇,其中英文文献不少于1篇;(5) 装订成册,并将本页装订在论文首页;(6) 以大班为单位收齐并上交。第1页共1页目录摘要 1ABSTRACT 10 引言 21 设计概述 21.1 设计要求 21.2 STM32实时时钟简介22 硬件电路设计 33 软件程序设计 33.1 需求分析 33.2
4、程序流程图 43.3 主要程序说明 44 调试过程与结果 54.1 调试过程 54.2 调试结果 55 设计总结 66 参考文献 67 附录 7串口数字时钟设计摘要本文介绍了利用处理器 STM32F103VET6勺实时时钟模块,设计一个简单的数字时钟的方 法。在对处理器STM32F103VET啲实时时钟模块进行正确设置后, 处理器会每一秒钟通过串 口发送数据到PC机上显示实时时间。关键词STM32实时时钟;串口Serial Ports Digital Clock DesignAbstractThis paper describes the use of STM32F103VET6 proces
5、sor of real time clock module, design a simple digital clock method. To STM32F103VET6 processor in the real time clock module after set correctly, processor will each seconds through a serial port sending data to PC displays real-time time.Key wordsSTM32;real time clock;serial ports0引言在现代人们的生活中, 时钟几
6、乎是不能缺少的东西。在许多单片机的应用系统中,实时时钟的设计是一个不可或缺的部分,要设计一个高精度、智能化的时钟往往需要花费一番心血。STM32处理器带有实时时钟模块,并有一个秒中断,能保证时钟的精度。1设计概述1.1设计要求对STM32处理器的实时时钟(RTC)模块进行操作,RTC模块的当前时间通过串口传送给 PC机的超级终端显示,若 RTC模块还未设置时间则通过超级终端进行设置。1.2 STM32实时时钟简介STM32处理器的实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下, 可提供时钟日历的功能。 修改计数器的值可以重新设置系统当前的时间 和日期。RTC模
7、块和时钟配置系统(RCC_BDC寄存器)处于后备区域,即在系统复位或从待机模式 唤醒后,RTC的设置和时间维持不变。系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。执行以下操作将使能对后备寄存器和RTC的访问:设置寄存器 RCC_APB1EN的 PWRE和BKPEN位,使能电源和后备接口时钟设置寄存器PWR_C的DBP位,使能对后备寄存器和 RTC的访问。RTC由两个主要部分组成如图1-1所示:APB1部分频模块,RTCCLK它可20位的可编程分每个APB1IJAF01接 口心桩科平彊电PCLK1Wtc prl产生最RTC S&cond* RTC_C
8、NTLCLK3玄位河颯程频器(RTC预分PTC器)果在RTC OverflowRTC CRff存器中RTC CR SECFSEC IE*fowT设置了ALRIE应的:允J位的可则在的预分编程计数器,的可编程时间相:匕较,如果寄存器中个闹钟中断。nvic断悝制器RTC Alerrn J-WKP stdbTh*可被初始化为当前的系统时间。系统图1-1 RTC框图第一部分(APB1接口)用来和APB1总线相连。此单元还包含一组16位寄存器,可通过APB1总线对其进行读写操作。APB1接口由APB1总线时钟驱动,用来与 APB1总线接口。另一部分(RTC核心)由一组可编程计数器组成,分成两个主要模块。
9、第一个模块是RTC的预分频模块,它可编程产生最长为1秒的RTC时间基准TR_CLK RTC的预分频模块包含了一个20位的可编程分频器(RTC预分频器)。如果在RTC_CF寄存器中设置了相应的允许位,则在 每个TR_CLK周期中RTC产生一个中断(秒中断)。第二个模块是一个 32位的可编程计数器, 可被初始化为当前的系统时间。系统时间按TR_CLK周期累加并与存储在 RTC_ALR寄存器中的可编程时间相比较,如果RTC_C號制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断。2硬件电路设计在系统板上 STM32F103VET6处理器的VBAT引脚接+3V钮扣电池,PC6引脚接LED1,串
10、口电路设计如图 2-1所示:QCIa图2-1 串口电路RS232串行通讯线将系统板的USART1 口与有了以上电路,使用该实例时只需将用一根 PC机的串口相连即可。3软件程序设计3.1需求分析根据设计要求,软件需实现以下任务:系统启动后检查 RTC是否已设置。由于RTC在 BKP区域,当Vdd掉电之后可由后备电源 提供电源,当后备电源连接到针脚VBAT上时,RTC的设置不会由于外部电源的断开而丢失。在本设计中写一个值到 BKP_DR寄存器中以标示 RTC是否已配置,在启动之后程 序检查BKP_DR1寄存器的值。若BKP_DR1寄存器的值不正确 (BKP_DR1寄存器的值有误或者由于是第一次运行
11、值还未 写进去),则需要配置时间并且询问用户调整时间。若BKP_DR的值正确,则意味着 RTC已配置,此时将在超级终端上显示时间。在RTC秒中断发生时,连接到 PC.06的LED1灯每秒闪烁一次。3.2程序流程图根据系统设计要求,程序设计流程图如图3-1所示:图3-1程序设计流程图3.3主要程序说明整个工程包含 3 个源文件:startup_stm32f10x_hd.s 、stm32f10x_it.c 和 main.c,其 中startup_stm32f10x_hd.s 为启动代码,所有中断服务子程序均在 stm32f10x_it.c 中,其 它函数则在main.c中。1程序清单:下面分别介绍
12、各个主要的函数,具体详细程序见附录stm32f10x_it.c 文件中函数RTC_IRQHandler用于处理RTC秒中断事件,每次秒中断令LED1闪烁一次,在每次遇到 23:59:59时将时钟回零。main .C函数RTC_C on figuration用于配置RTC莫块。函数USART_Sca n用于从PC超级终端 中获取数字值,Time_Regulate利用函数USART_Scan从超级终端获取新的 RTC寸间值, 函数Time_Adjust则利用函数USART_Scan设置新的RTC寸间。函数Time_Display和 Time_Show用于将RTC寸间转换了字符串送往 USART14
13、调试过程与结果4.1调试过程使用Keil uVision3 打开工程RTC-USART.Uv2用仿真器连接系统板和 Keil uVision3,编译链接工程;使用标准串口线,连接系统板上的USART接口和PC机的串口;打开串口调试工具 ComTools,设置通讯端口参数为:COM端口,波特率9600,8位数据位, 1位停止位,无校验位,无硬件流控制。选择硬件调试模式(也可采用软件调试模式, 利用USART窗口来模拟实现 COM的输入和 输出),点击 Keil uVision3 的 Debug菜单,选择 Start/Stop Debug Session 项或 Ctrl+F5 键,远程连接目标板并
14、下载调试代码到目标系统中;4.2调试结果例程正常运行之后会在超级终端显示以下信息:RTC not yet con figured.RTC con figured.=TimeSett in gs= Please Set Hours:在PC机上依次输入时钟、分钟、秒钟之后每隔1秒在ComTools上显示一次时间,同时开发板的LED1灯也会每隔1s闪烁一次。显示效果图4-1所示:KX not y*t cauficuartd.*. RTC coufPleue Set :16 Pleue Set Rirnittf 46 Pleu# SetStcondi: 4fi Tim: 16:46:46 Tiu: 1
15、6:46:46 Ti: 16:4:4? Ti: 16:46:48 Ti: 10:46:49 Tiw: 16:46:60 Tuw: 16:40:51 Tine: 16:46:储 Tim: 16:46:55 Tiw: 16:46:54 Tine; 16:46:55 Tw: 16:46:56 Tiike: 16:46:57 Ti: 16:46:50 Ti*e: 16:(6:59 Tiw: 16;47:00 Ti: 16:47iOl Ti*e: 16:4T:02 Ti*e: 16:47:03 Tihe: 16:47:04 Ti*e:Tme:16:47:06 Tibv: 16:17:0T Tine: 1
16、6:47:09 Tlm: 16:47:09 Tim: 16:47:10 Tint: 16:47:11 Tifct: 16:4?: 12 Tim: 164?: 13 Tiae: 16:47:14 16:47:15 Tme: 16:47:16 Ti: 16:47:IT Tua: 16:47:18 Tiu: 16:4T:1S Tt*e; 16:4?:30 Tw: 16:4T:21 Ti*e: 16:J722 Tw: 16:7:J3 Tw: 16:47:24 Tike; 1G:4T:爲 Tmr; 16:7:26 Tuw; 16;47;27 Tim; 1G;47;2B Ti*p: 16:47:3 Tin
17、#: 16:4T:30 Ti”: 16;47:31 Ti*o: 16:7:32 Tm*: 16:47:33 Tine:Tm:逋:弟:35 Tike: 16;4?:36 Tihc: 16N?:3?Tine: 16:47:38图4-1ComTools也将继续程序正常运行时断开系统板外部电源,然后重新接上外部电源,在 显示正常时间。显示效果图4-2所示:I Pover OnNq ned to confiture Tiu: 16:50:36 Ti: 1:矽:27 Tiu: 15:50:28 Ti: 19:50:39 T1m: 16:5O: Tiv: 16:50:31 Tw: 16:50:32 Tim:
18、 16:50:93 Tim: 16:S0:34 Tlu: 1 创SO:福 Tiu: 16:90:90 Tiu: 1A:SO:$7 Tl: 19:60:38 Tim: 16:50:3& Tikq: 16:50:40 Tim: 16:50:41 Tiv: 16:50:42 Tim: l:50:43 亍uk: 1650:44 Tiu: 1650:45 Tiu: 16:S0:46 Tiu: 16:80:47 TIm: 16:50:4a Tw: 16:50:49 Tw: 16:50:50 Tiw: 16:$0:61 Tw: 16:SO:2 Ti*e: 16:5: S3 Ti*e: 16:S0:54 Ti
19、m: 16:S0:S5 Tl*#; 16:50:5d Tm&: 16:50:57图4-1PC超级终端上取下系统板上的纽扣电池,并断开外部电源,然后重新接上外部电源, 将无法继续正常显示时间,要重新设置时间才能正常显示。5设计总结本次课程设计设计的是串口数字时钟,是针对处理器 STM32的实时时钟模块和串行通讯口设计的一个应用系统。该系统通过PC机的超级终端提供人际交互界面,实现和STM32的通讯,在设置好时间后,STM32会每一秒钟在超级终端上输出实时时间。通过设计该系统,我学习了 STM32实时时钟模块和通用串行输入输出端口的应用,也对其他通用模块有了一定的了解。STM32F10X微控制器参
20、考手册.2010STM32固件库使用手册的中文翻译版.20106参考文献1 意法半导体(中国)投资有限公司.2 意法半导体(中国)投资有限公司.7附录stm32f10x_it.c 文件:void RTC_IRQHa ndler(void)if(RTC_GetlTStatus(RTC_IT_SEC) != RESET) RTC_ClearITPe ndi ngBit(RTC_IT_SEC);GPIO_WriteBit(GPIOB, GPIO_Pin_6,(BitAction)(1-GPIO ReadOutputDataBit(GPIOB, GPIO Pin 6); LED10:0:0TimeDi
21、splay = 1;RTC_WaitForLastTask();if(RTC_GetCou nter() = 0x00015180)RTC_SetCou nter(0x0); RTC_WaitForLastTask();main.c 文件:#include stm32f10x.h#include stm32f10x_bkp.h#include stm32f10x_gpio.h#include stm32f10x_rcc.h#include stm32f10x_usart.h#include stm32f10x_rtc.h#in clude stm32f10x_flash.h#include s
22、tm32f10x_pwr.h#i nclude misc.h#in clude /读取秒中断状态/清除秒中断标志闪烁/等待上一次对RTC寄存器的写操作完成/当前时间是23:59:59 时复位为/写入复位值vu32 TimeDisplay = 0;void RCC_Co nfigurati on (void); void GPIO_Co nfigurati on (void); void USART_Co nfiguratio n( void); void RTC_C on figuratio n( void); void NVIC_Co nfigurati on (void); u32 Tim
23、e_Regulate(void);void Time_Adjust(void); void Time_Show(void);void Time_Display(u32 TimeVar); u8 USART_Sca nf(u32 value);int mai n(void)#ifdef DEBUGdebug();#en difRCC_Co nfiguratio n();NVIC_Co nfiguratio n();GPIO_C on figuratio n();USART_Co nfigurati on();/系统时钟初始化/中断初始化/GPIO 初始化/ 串口 1初始化if(BKP_ReadB
24、ackupRegister(BKP_DR1) != 0xA5A5)RTC标志是否已经被配置过prin tf(r nn RTC not yet con figured.);RTC_Co nfiguratio n();prin tf(rn RTC con figured.);Time_Adjust();BKP_WriteBackupRegister(BKP_DR1,0xA5A5);志写入备份数据寄存器else/判断保存在备份寄存器的/RTC 初始化/设置RTC时钟参数/RTC 设置后,将已配置标if(RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET) /检查是
25、否掉电重启prin tf(r nn Power On Reset occurred.);else if(RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET) /检查是否 reset 复位prin tf(r nn Exter nal Reset occurred.);prin tf(r n No n eed to con figure RTC.);RTC_WaitForSy nchro(); 步/等待RTC寄存器被同RTC_ITC on fig(RTC_IT_SEC, ENABLE);/使能秒中断RTC_WaitForLastTask();RCC_ClearF
26、lag();Time_Show();/显示时钟void RCC_Co nfigurati on (void) RCC_DeI nit();为缺省值/将外设RCC寄存器重设RCC_HSEC on fig(RCC_HSE_ON);/设置外部高速晶振HSEStartUpStatus = RCC_WaitForHSEStartUp();/等待HSE起振if(HSEStartUpStatus = SUCCESS)RCC_HCLKCo nfig(RCC_SYSCLK_Div1);钟II如果HSE成功起振/设置AHB时钟为系统时RCC_PCLK2Co nfig(RCC_HCLK_Div1);II设置高速AH
27、B时钟RCC_PCLK1Co nfig(RCC_HCLK_Div2);II设置低速AHB时钟FLASH_SetLate ncy(FLASH_Late ncy_2);时周期FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_E nable);II设置代码延时值为 2延RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /设置 PLL 的输入时钟为HSE时钟,倍频系数为 9RCC_PLLCmd(ENABLE);II使能PLLwhile(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) =
28、 RESET) II等待PLL就绪RCC_SYSCLKCo nfig(RCC_SYSCLKSource_PLLCLK);II选择PLL作为系统时钟while(RCC_GetSYSCLKSource() != 0x08)II等待PLL作为系统时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPI0A |RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC , ENABLE); /使能外设时钟void NVIC_C on figurati on (void)NVIC_I ni tTypeD
29、ef NVIC_I ni tStructure;NVIC_PriorityGroupCo nfig(NVIC_PriorityGroup_1);NVIC_I ni tStructure.NVIC_IRQCha nnel = RTC_IRQ n;NVIC_I ni tStructure.NVIC_IRQCha nn elPreemptio nPriority = 1;NVIC_I ni tStructure.NVIC_IRQCha nn elSubPriority = 0;NVIC_I ni tStructure.NVIC_IRQCha nn elCmd = ENABLE;NVIC_I nit(
30、&N VIC_I nitStructure);void GPIO_C on figurati on (void)GPIO_I ni tTypeDef GPIO_I nitStructure;GPIO_I nitStructure.GPIO_P in = GPIO_P in_6;GPIO_I nitStructure.GPIO_Speed = GPIO_Speed_5OMH z;GPIO_I ni tStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_I nit(GPIOC, & GPIO_I nitStructure);GPIO_I ni tStructur
31、e.GPIO_Pin = GPIO_Pin_9;GPIO_I ni tStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_I nit(GPIOA, & GPIO_I nitStructure);GPIO_I ni tStructure.GPIO_Pin = GPIO_Pin_10;/ 配置RTC秒中断/PC.06/ 最高输出速率 50MHz/推挽输出模式/PA.09,串口发送引脚/复用推挽输出模式/PA.10,串口接收引脚GPIO_I ni tStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /浮空输入模式GPIO_I
32、nit(GPIOA, & GPIO_I nitStructure); void RTC_Co nfiguratio n( void)RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR |RCC_APB1Periph_BKP, ENABLE); /使能PWR和BKP时钟/使能RTC和后备寄存PWR_BackupAccessCmd(ENABLE);器访问BKP_De In it();RCC_LSECo nfig(RCC_LSE_ON);while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) = RESET)/ 重置BKP 等待LSE就绪RC
33、C_RTCCLKCo nfig(RCC_RTCCLKSource_LSE); 钟RTC_WaitForLastTask();寄存器的写操作完成II 选择LSE作为RTC时/ 等待最近一次对RTCu32 Time_Regulate(void)u32 Tmp_HH = 0xFF, Tmp_MM = 0xFF, Tmp_SS = 0xFF;prin tf(r n=TimeSett in gs=);printf(rn Please Set Hours);while(Tmp_HH = 0xFF)Tmp_HH = USART_Sca nf(23);23prin tf(: %d, Tmp_HH);print
34、f(rn Please Set Minutes);while(Tmp_MM = 0xFF)Tmp_MM = USART_Sca nf(59);59prin tf(: %d, Tmp_MM);prin tf(rn Please Set Seco nds);while(Tmp_SS = 0xFF)Tmp_SS = USART_Sca nf(59);II输入小时,输入的值小于II 输入分,输入的值小于II输入秒,输入的值小于59prin tf(: %d, Tmp_SS);return (Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS);成秒作为返回值void Time_Adjust
35、(void)RTC_WaitForLastTask();存器的写操作完成RTC_SetCou nter(Time_Regulate();输入的当前时间RTC_WaitForLastTask();存器的写操作完成II将当前输入的时间换算II等待最近一次对 RTC寄II设置RTC计数器的值为II等待最近一次对 RTC寄void Time_Display(u32 TimeVar)u32 THH = 0, TMM = 0, TSS = 0;THH = TimeVar/3600;TMM = (TimeVar % 3600)/60;TSS = (TimeVar % 3600)% 60;printf(Time: %0.2d:%0.2d:%0.2dr,THH, TMM, TSS);void Time_Show(void)prin tf(nr);while(1)if(TimeDisplay = 1)Time_Display(RTC_GetCounter(); /TimeDisplay = 0;void USART_Co nfiguratio n( void)USAR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司文化建立与传承指南
- 农业大数据驱动的精准农业种植模式创新方案
- 建筑材料行业智能制造与绿色建筑发展方案
- 移动支付安全与风险应对策略文档
- 健康食品追溯体系建立与优化方案
- 贵州2025年贵州省科学技术厅所属事业单位招聘7人笔试历年参考题库附带答案详解
- 甘肃2025年甘肃省强制医疗所招聘3人笔试历年参考题库附带答案详解
- 湖南2025年国家税务总局湖南省税务局系统事业单位招聘42人笔试历年参考题库附带答案详解
- 两种膝关节镜手术体位对发生下肢深静脉血栓的影响
- 蒙太奇摄影工作室创业计划
- 幼儿园春季传染病预防知识课件
- GB/T 11067.1-2006银化学分析方法银量的测定氯化银沉淀-火焰原子吸收光谱法
- GA 857-2009货物运输微剂量X射线安全检查设备通用技术要求
- 学校食堂食品安全自查自评表
- 【 幼儿自主游戏中教师的支持策略 】
- 管道防腐检验批质量验收记录
- 出口商业发票范本
- 《购货合同》(Sales Contract) 中英文样本
- 部编版四年级下册道德与法治 第5课 合理消费 教学课件
- (本科)东南亚经济与贸易全套教学课件完整版PPT
- 《村级财务管理培训》PPT课件
评论
0/150
提交评论