




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图7时钟模块流程图
5.3定时控制模块定时控制模块是通过函数LcdShow_Init来实现的,LcdShow_Init配置的LCD的显示各个参数,在时钟相对输出模式下初始化TIM2通用定时器。通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入采集)或者产生输出波形使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。首先,程序对通用定时器的结构的模式进行初始化,对预装载寄存器进行初始化配置。接下来,对时钟的基本参数进行配置:TIM_Period配置在下一次更新事件中自动装载寄存器下载的时间,TIM_Prescaler设置预分频器的值,用来分配TIMx通用定时器时钟,其值必须在0x0000和0xFFFF之间;TIM_ClockDivision配置时钟分配;TIM_CounterMode选择计数器模式,程序里TIM_CounterMode_Up为向上计数模式,即计数器从0计数到自动加载值(TIMx_ARR计数器的内容),然后重新从计数,并且产生一个计数器溢出事件。TIM_ARRPreloadTIM_ARRPreloadConfig(TIM2,DISABLE)使TIM2预加载到ARR寄存器里。接下来是根据TIM_OCInitStructure确定的参数来初始化TIMx的外设。TIM_OCMode选择时钟模式,程序中TIM_OCMode_Timing为时钟输出计数模式。TIM_Channel选择所用通道,程序中选择通道1.TIM_Pulse设置脉冲值,这个值会被装载到捕获/比较模式寄存器里。其值必须是0x0000到0xFFFF之间。TIM_OCPolarity设置输出极性,程序里的极性为high。TIM_OC1PreloadConfig禁用捕获/比较模式寄存器CCR1里的预分载器,最后,TIM_ITConfig允许指定TIMx的中断,使能TIM2。对Period配置在下一次更新。5.4中断模块嵌套向量中断控制(NVIC)。有多种用途,例如可以允许和禁止中断请求,允许和禁止独立的IRQ通道,改变IRQ通道的优先级,可以实现低延迟的中断处理和有效处理地处理晚到的中断。NVIC采用中断方式可以提高系统的实时性,可以快速响应对数据的采集和存储请求。它支持电平和脉冲中断源。处理状态会在中断进入时由硬件自动保存,并在中断退出时恢复。开发板上每个外设都是一个中断源,它们是通过中断控制器NVIC来控制的。NVIC有43个可管理的中断通道,16个可编程的优先级别。系统的中断向量表是固定的(也可以通过编程改变),用户可以不用直接接触中断向量表,而只需要在系统提供的相应的中断处理程序中填写代码,实现用户需要的功能。程序模块的初始化的主要工作是开启中断通道,并设置它们的优先级,NVIC_InitTypeDef在stm32f10x_nvic.h定义,定义的参数包NVIC_IRQChannel、NVIC_IRQChannelPreemptionPriority、NVIC_IRQChannelSubPriority、FunctionalStateNVIC_IRQChannelCmd。程序所用到的中断有TIM2、ADC、按键1(设置为外部中断线4)和按键2(设置为外部中断线3),它们的优先级分别是1、4、2、3。调用NVIC_Init()对中断通道进行配置。VECT_TAB_RAM用于选择不同的向量定位。RAM和Flash在存储空间中处于不同的地址区域,因此向量表中的向量的内容也不一样;向量表放在RAM时,表中的向量应指向RAM中的处理程序,中断发生在RAM里;而向量表放在Flash时,表中的向量应指向Flash中的处理程序,中断则发生在Flash里。以下是中断实现详细的流程图:图8中断实现流程图
六、实验项目实验一、基于STM32CPU控制的8253实验一、实验目的通过掌握STM32开发手段和步骤,熟悉当前接口技术发展的现状;了解使用高级C语言中函数的调用编程,进而熟悉8253的工作原理;掌握STM32产生控制信号的方法,进而深入了解和熟悉可编程芯片的内在规律的实质。了解当今定时/技术技术发展的趋势和所能实现的功能,为今后设计更加复杂的电路作技术储备。学生在课堂上仅仅通过了理论的学习,还需要对所学知识有个直观而生动的了解,这个实验可以使学生更深刻的理解8253A定时/计数器的各种工作方式的特点;通过观察实验波形,可直观地了解这几种工作方式的异同。二、实验内容实验使用STM32的GPIO接口作为8253的数据信号和控制信号,如图1所示,要求8253工作在方式3,产生方波。拓展实验:可以根据8086基础实验的内容,设计实现由STM32控制的基础实验。比如:编写程序分别显示0,2,3几种工作方式下的波形。要求2方式的输出频率为1000Hz,3方式的输出频率为2000Hz,0方式的定时长度为。本实验使用8253A的定时/计数器2,GATE2通过K1接到+5V或地,CLK2接1MHZ的时钟脉冲,OUT2接示波器观测输出波形,并在数码管上显示“8253A”。三、实验接线图图1定时器模块实现连线图四、实验编程提示8253的输入信号采用STM32的定时器输出信号,这样,需要对STM32的定时器实现做一个全面的了解,比较8253和STM32实验平台定时器两者的异同。五、实验步骤根据原理图正确连接实验线路。正确理解实验原理。编写实验程序,并上机调试,用示波器观察实验结果。
实验二:基于STM32控制的8255实验一、实验目的1、通过掌握STM32开发手段和步骤,熟悉当前接口技术发展的现状;2、了解使用高级C语言中函数的调用编程,进而熟悉8255的工作原理;3、掌握STM32产生控制信号的方法,进而深入了解和熟悉可编程芯片的内在规律的实质。4、了解当今GPIO接口技术发展的趋势和所能实现的功能,为今后设计更加复杂的电路作技术储备。二、实验内容实验使用STM32的GPIO接口作为8255的数据信号和控制信号,如图2所示,要求8255工作在方式0。三、实验接线图图2并口模块实验连线图四、实验步骤1、根据原理图正确连接实验线路。2、正确理解实验原理。3、编写实验程序,并上机调试,观察实验结果。
实验三、基于STM32控制的8251实验一、实验目的1、通过掌握STM32开发手段和步骤,熟悉当前接口技术发展的现状;2、了解使用高级C语言中函数的调用编程,进而熟悉8251的工作原理;3、掌握STM32产生控制信号的方法,进而深入了解和熟悉可编程芯片的内在规律的实质。4、了解当今串行通信技术发展的趋势和所能实现的功能,为今后设计更加复杂的电路作技术储备。二、实验内容通过STM32的GPIO产生控制和数据信号,进而控制8251的发送和接收(自环连接),实验电路如图3所示。三、实验接线图图3串口模块实验连线图四、实验步骤1、根据原理图正确连接实验线路。2、正确理解实验原理。3、编写实验程序,并上机调试,用示波器观察实验结果。
实验四:基于STM32CPU控制的ADC0809中断方式数据采集实验一、实验目的1、通过掌握STM32CPUCPU开发手段和步骤,熟悉当前接口技术发展的现状;2、了解使用高级C语言中函数的调用编程,进而熟悉ADC0809的工作原理和时序;3、掌握STM32CPUCPU中断及其处理的设置,进而熟悉中断的基本概念。二、实验内容实验使用STM32CPU的GPIO接口作为ADC0809的数据信号和控制信号,如图4所示,要求采用ADC0809通道0作为输入模拟信号;输出的数据信号(采集点数量自定)存储在RAM中,并利用调试手段验证其准确性。三、实验接线图图4STM32CPU控制的ADC0809A/D采集硬件图四、实验编程提示输入可以是如图4所示的可变的直流电位,也可以是连续波形信号,比如1KHZ方波等(可以由STM32实验平台之定时器产生)。五、实验步骤1、分析实验电路图,根据图2-1正确连接实验线路。2、重点要注意STM32CPU产生的控制信号与ADC0809时序的配合问题。3、编写实验程序,并上机调试,在RAM中验证实验结果。
参考文献1.《IAREWARM快速入门》(1.0版)2006.22.牛志成徐立辉刘冬莉《C语言程序设计》清华大学出版社,20083.JeanJ.Labrosse(邵贝贝译)《嵌入式实时操作系》uC/OS-II(第2版)》北京航空航天大学出版社,2003年4.张垚邵惠鹤《基于嵌入式控制器的液晶显示模块的设计与开发》微型电脑应用,2004年第20卷第8期5.贾智平《嵌入式系统原理与接口技术》清华大学出版社,20056.黄盈鑫《STM32F103-EVAL用户手册》(V1.0)2007-12-097.张雄伟,曹铁勇《DSP芯片的原理与开发应用》北京:电子工业出版社,20028.张卫杰,侯孝民《高速大容量数据采集系统得设计与实现》电子测量与仪器学报,vol.19no.49.《UM0427UsermanualARM®-based32-bitMCUSTM32F101xxandSTM32F103xxfirmwarelibrary》(V2.0)2007.1010.其他英文资料来源:
附录:部分源程序(1).其中设置8253工作方式及初值的函数如下:/********************************************************************************FunctionName:8253_Configuration*Description:Configurestheworkstyleof8253*******************************************************************************/voidChooseCounter0Write(u16portval)\\设置选定计数器0{u16val;val=(portval&0x00ff)<<8;val=val+0x0008;GPIO_Write(GPIOB,val); }voidChooseCounter1Write(u16portval)\\设置选定计数器1{u16val;val=(portval&0x00ff)<<8;val=val+0x0009;GPIO_Write(GPIOB,val);}voidChooseCounter2Write(u16portval)\\设置选定计数器2{u16val;val=(portval&0x00ff)<<8;val=val+0x000a;GPIO_Write(GPIOB,val);}voidChooseControlerWrite(u16portval)\\设置控制命令字{u16val;val=(portval&0x00ff)<<8;val=val+0x000b;GPIO_Write(GPIOB,val);}voidChooseCounter0Read(u16*portval)\\设置为读取计数器0{ GPIO_Write(GPIOB,0x0004); u16val;val=GPIO_ReadOutputData(GPIOB); val=(val&0xff00)>>8; *portval=val;}voidChooseCounter1Read(u16*portval)\\设置为读取计数器1{ GPIO_Write(GPIOB,0x0005); u16val;val=GPIO_ReadOutputData(GPIOB); val=(val&0xff00)>>8; *portval=val;}voidChooseCounter2Read(u16*portval)\\设置为读取计数器2{ GPIO_Write(GPIOB,0x0006); u16val;val=GPIO_ReadOutputData(GPIOB); val=(val&0xff00)>>8; *portval=val;}(2).设置时钟初始化的程序如下:/********************************************************************************FunctionName:RCC_Configuration*Description:Configuresthedifferentsystemclocks.*Input:None*Output:None*Return:None*******************************************************************************/voidRCC_Configuration(void)\\对STM32的系统时钟及外部设备时钟进行初始化{/*RCCsystemreset(fordebugpurpose)*/RCC_DeInit();/*EnableHSE*/RCC_HSEConfig(RCC_HSE_ON);/*WaittillHSEisready*/HSEStartUpStatus=RCC_WaitForHSEStartUp();if(HSEStartUpStatus==SUCCESS){/*EnablePrefetchBuffer*/FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/*Flash2waitstate*/FLASH_SetLatency(FLASH_Latency_2); /*HCLK=SYSCLK*/RCC_HCLKConfig(RCC_SYSCLK_Div1);/*PCLK2=HCLK*/RCC_PCLK2Config(RCC_HCLK_Div1);/*PCLK1=HCLK/2*/RCC_PCLK1Config(RCC_HCLK_Div2);/*PLLCLK=8MHz*9=72MHz*/RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);/*EnablePLL*/RCC_PLLCmd(ENABLE);/*WaittillPLLisready*/while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET){}/*SelectPLLassystemclocksource*/RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/*WaittillPLLisusedassystemclocksource*/while(RCC_GetSYSCLKSource()!=0x08){}}}(3).GPIO初始化的程序如下:/********************************************************************************FunctionName:GPIO_Configuration*Description:ConfiguresIOport_B.*Input:None*Output:None*Re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业制冷与温控系统的技术进展
- 工业4.0与智能制造的深度解析
- 展厅内布局规划对观众体验的影响研究
- 展品陈列与观众互动的优化策略研究
- 小学生语言感知能力在英语教学中的培养研究
- 小型水力发电站的可持续发展研究
- 对全球新能源汽车行业的技术发展趋势及市场前景的研究报告
- 2025年免疫治疗在自身免疫性皮肤病中的患者满意度提升突破报告
- 义工协会管理制度
- 2025年免疫治疗技术在自身免疫性肺纤维化疾病中的应用突破报告
- 整套企业人事管理制度
- 大学学院辅导员工作考核基本指标
- 中国铁路济南局集团招聘笔试题库2025
- 公司活动中心管理制度
- 2025年形势与政策课程期末考试复习试卷及答案
- T/CAPE 11005-2023光伏电站光伏组件清洗技术规范
- 2025年河北省中考乾坤押题卷数学试卷A及答案
- 医学统计学大题重点知识总结
- 2025年公共关系工作实务试题及答案
- 2025年山东省淄博市桓台县中考二模历史试题
- 含硫(硒)自由基:有机功能分子构建的关键路径与前沿探索
评论
0/150
提交评论