




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/19嵌入式操作系统新技术及应用实验报告丁文斌在实验报告中,黑色部分为必写部分,红色部分可以根据个人情况省略,蓝色部分为同学们自己补充部分,最后的思考题必须独立完成,不得抄袭,凡是抄袭思考题,一律0分,实验报告没收,重新写一遍。嵌入式操作系统新技术及应用实验报告丁文斌 1:新建文件夹,用自己的学号+实验编号作为文件夹名字。2:拷贝一些文件夹到自己的文件夹,cm3,stm32f10x_stdperiph_driver,user三个夹根目录下面新建空目录mdk,用来存放工程文件。在mdk目录下建两4:在keil中建立一个工程,工程名字为自己的学号+实验编号"B10120101"。stmfxstdperphidriverincuser8:建立自己的main.c文件。可以拷贝参考文件.9:关于工程中,需要建立的文件夹。为什么要分很多个不同的文件夹?区分不同的功启动代码文件夹,一定要有一个启动代码,根据芯片不同,代码不同,启动代码在2:插入下载板;选择自动搜索驱动。嵌入式操作系统新技术及应用实验报告丁文斌next题。检查是否从系统存储器启动,启动设置为短路BOOT0。复位系统。此时可以看到通信成功,并看到芯片容量。11:改为用户存储区启动,启动方式修改为断开BOOT0。三、编程步骤1:修改_conf.h配置头文件屏蔽不需要的驱动头文件4:端口时钟打开RCC_APB2PeriphClockCmd(RCC_GPIO_KEY,ENABLE);5:用结构体变量对端口的引脚、速度、模式配置GPIO_Init(GPIO_KEY_PORT,&GPIO_InitStructure);4:主函数cludestmfxhPIOAEDriphGPIOAPORTPINGPIO_Pin_2EYriphGPIOAPORTPINGPIO_Pin_0voidRCCConfigurationvoid配置dKEYconfigvoidInitTypeDefGPIOInitStructure钟CCAPBPeriphClockCmdRCCGPIOKEYENABLE些引脚GPIO_Pin的速度50MHz和模式pp赋值GPIO_InitStructure.GPIO_Pin=GPIO_KEY_PIN;//GPIO_Pin_0GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIOInit用来设置刚才的参数。GPIOInitGPIOKEYPORTGPIOInitStructure;}/////////////////////////////LED/////////////////////////////////嵌入式操作系统新技术及应用实验报告丁文斌dLEDconfigvoid{InitTypeDefGPIOInitStructureRCCAPBPeriphClockCmdRCCGPIOLEDENABLE;GPIOInitStructureGPIOPinGPIOLEDPINGPIOInitStructureGPIOSpeedGPIO_Speed_50MHz;GPIOInitStructureGPIOModeGPIOModeOutPPGPIOInitGPIOLEDPORTGPIOInitStructure;}{uTempKey/读取按键的临时变量RCCDeInit;onfigurationsysclkMpckl36Mpclk2=72MtKEYconfigconfigwhile(1){//读取key端口状态并根据端口状态设置led的状态pKeyGPIOReadInputDataBitGPIOKEYPORTKEYPINGPIOWriteBitGPIOLEDPORT,GPIO_LED_PIN,(BitAction)TempKey);}}voidRCCConfigurationvoid{StatusHSEStartUpStatus量HSEConfigRCCHSEON钟RCCHSEConfigRCCHSEOFF;钟HSEStartUpStatusRCC_WaitForHSEStartUp();稳定成功嵌入式操作系统新技术及应用实验报告丁文斌{HCLKConfigRCCSYSCLKDivHCLKAHB系统时钟PCLKConfigRCCHCLKDivPCLKAPB值等于HCLK的一半,最高不超过36MHzPCLKConfigRCCHCLKDivPCLKAPB等于HCLK,最高可是72MHzFLASHSetLatency(FLASH_Latency_2);LASHSYSCLKMHz//Latency=0.//SYSCLK25~48MHzLatency=1.SYSCLkMHzLatency=2SHPrefetchBufferCmdFLASHPrefetchBufferEnableFLASHRCCPLLConfigRCCPLLSourcePREDIV,RCC_PLLMul_9);clcpu震荡直接送入RCCPLLConfigRCCPLLSourceHSEDiv,RCC_PLLMul_9);CCPLLCmdENABLEPLLwhileRCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);SCLKConfigRCCSYSCLKSourcePLLCLKPLL输出while(RCC_GetSYSCLKSource()!=0x08);稳定}}嵌入式操作系统新技术及应用实验报告丁文斌一、接线方法A根据神舟I号的电路板电路原理图绘图自己画图。二、程序编写CGPIOKEYIOKEYPORTIOKEYPINEYconfigvoidriphGPIOAGPIO_Pin_0InitTypeDefGPIOInitStructure钟APBPeriphClockCmdRCCGPIOKEYENABLE嵌入式操作系统新技术及应用实验报告丁文斌对某些引脚GPIO_Pin的速度50MHz和模式pp赋值GPIO_InitStructure.GPIO_Pin=GPIO_KEY_PIN;//GPIO_Pin_0GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;tGPIOInitGPIOKEYPORTGPIOInitStructure;}{uTempKey/读取按键的临时变量RCCDeInit;onfigurationsysclkMpckl36Mpclk2=72MtKEYconfigconfigwhile(1){//读取key端口状态并根据端口状态设置led的状态TempKeyGPIOReadInputDataBitGPIOKEYPORTGPIOKEYPIN;GPIOWriteBitGPIOLEDPORTGPIOLEDPIN,(BitAction)TempKey);}}三、实验现象嵌入式操作系统新技术及应用实验报告丁文斌实验目的:掌握中断程序的编写和外部中断的触发方法,实现外部上升沿和下降沿触,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。键按下后同样闪烁,再按下一次,停止闪烁。实验程序内容:voidGPIO_Configuration(void)//输入输出管脚配置{GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);}voidNVIC_Configuration(void)//嵌套向量中断控制器配置{NVIC_InitTypeDefNVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);嵌入式操作系统新技术及应用实验报告丁文斌//选择优先级组别NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//0级抢占式优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//0级副优先级NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能引脚作为中断源NVIC_Init(&NVIC_InitStructure);//调用NVIC_Init固件库函数进行设置}voidEXTI_Configuration(void){GPIO_EXTILineConfig函数,//其中两个参数分别是中断口和中断口对应的引脚号GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);EXTI_InitStructure.EXTI_Line=EXTI_Line0;/将中断映射到中断/事件源Line0EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling//设置为下降沿中断EXTI_InitStructure.EXTI_LineCmd=ENABLE;//中断使能,即开中断EXTI_Init(&EXTI_InitStructure);调用EXTI_Init固件库函数,将结构体写入EXTI相关寄存器中}KALED灯嵌入式操作系统新技术及应用实验报告丁文斌串口就是通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIRENDEC规接受数据输入(RX)和发送数据输出(TX)。RX:接受数据串行输入。通过过采样技术来区别数据和噪音,从而恢复数据。TXIO。(3)配置USART1数据格式、波特率等参数(4)使能USART1接收中断功能能USART1功能GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//悬空输入GPIO_Init(GPIOA,&GPIO_InitStructure);USART_InitStructure.USART_BaudRate=9600;//波特率=9600USART_InitStructure.USART_WordLength=USART_WordLength_8b;//数据位字长=8USART_InitStructure.USART_StopBits=USART_StopBits_1;//停止位=1USART_InitStructure.USART_Parity=USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl=ARTHardwareFlowControlNoneRTSCTS嵌入式操作系统新技术及应用实验报告丁文斌USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//串口接收发送同时有效USART_Init(USART1,&USART_InitStructure);//配置串口1,若配置USART2,需重新写一遍上述代码USART_ClearFlag(USART1,USART_FLAG_RXNE);USART_ClearFlag(USART1,USART_FLAG_TXE);USART_Cmd(USART1,ENABLE);要配置串口中断,则代码如下:USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//USART_ITConfig(USART1,USART_IT_TXE,ENABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;级NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;级//定义//先占优先//从占优先RQChannelCmdENABLENVIC_Init(&NVIC_InitStructure);嵌入式操作系统新技术及应用实验报告丁文斌一个硬件上的中断(滴答中断)。SysTick设定初值并使能后,每经过1个系统时钟周期,voiddelay_init(void){RCC_ClocksTypeDefRCC_ClocksStatus;RCC_GetClocksFreq(&RCC_ClocksStatus);SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);/*选择外部时钟HCLK/8*/SysTick_ITConfig(DISABLE);delay_fac_us=RCC_ClocksStatus.HCLK_Frequency/8000000;delay_fac_ms=RCC_ClocksStatus.HCLK_Frequency/8000;}us函数:voiddelay_us(u32Nus){SysTick_SetReload(delay_fac_us*Nus);SysTick_CounterCmd(SysTick_Counter_Clear);SysTick_CounterCmd(SysTick_Counter_Enable);{/*时间加载*//*清空计数器*//*开始倒数*/Status=SysTick_GetFlagStatus(SysTick_FLAG_COUNT);}while(Status!=SET);/*等待时间到达*/SysTick_CounterCmd(SysTick_Counter_Disable);/*关闭计数器*/SysTick_CounterCmd(SysTick_Counter_Clear);/*清空计数器*/}voiddelay_ms(uint16_tnms){uint32_ttemp=delay_fac_ms*nms;嵌入式操作系统新技术及应用实验报告丁文斌if(temp>0x00ffffff){temp=0x00ffffff;}SysTick_SetReload(temp);/*时间加载*/SysTick_CounterCmd(SysTick_Counter_Clear);/*清空计数器*/SysTick_CounterCmd(SysTick_Counter_Enable);/*开始倒数*/{Status=SysTick_GetFlagStatus(SysTick_FLAG_COUNT);}while(Status!=SET);/*等待时间到达*/SysTick_CounterCmd(SysTick_Counter_Disable);/*关闭计数器*/SysTick_CounterCmd(SysTick_Counter_Clear);/*清空计数器*/}使用systick延时,可以精确控制延时时间。嵌入式操作系统新技术及应用实验报告丁文斌实验目的:掌握实时时钟的编程方法,掌握时间提取和设置方法APB1,由系统复位。RTC,只能由后备域复位。秒中断溢出中断FvoidRTC_Configuration(void){/*EnablePWRandBKPclocks*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);/*AllowaccesstoBKPDomain*/PWR_BackupAccessCmd(ENABLE);/*ResetBackupDomain*/BKP_DeInit();/*EnableLSE*/RCC_LSEConfig(RCC_LSE_ON);/*WaittillLSEisready*/while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET){}/*SelectLSEasRTCClockSource*/RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);/*EnableRTCClock*/RCC_RTCCLKCmd(ENABLE);/*WaitforRTCregisterssynchronization*/RTC_WaitForSynchro();/*WaituntillastwriteoperationonRTCregistershasfinished*/RTC_WaitForLastTask();/*EnabletheRTCSecond*/嵌入式操作系统新技术及应用实验报告丁文斌RTC_ITConfig(RTC_IT_SEC,ENABLE);/*WaituntillastwriteoperationonRTCregistershasfinished*/RTC_WaitForLastTask();/*SetRTCprescaler:setRTCperiodto1sec*/RTC_SetPrescaler(32767);/*RTCperiod=RTCCLK/RTC_PR=(32.768KHz)/(32767+1)*//*WaituntillastwriteoperationonRTCregistershasfinished*/RTC_WaitForLastTask();}voidTime_Adjust(void){/*WaituntillastwriteoperationonRTCregistershasfinished*/RTC_WaitForLastTask();/*Changethecurrenttime*/RTC_SetCounter(Time_Regulate());/*WaituntillastwriteoperationonRTCregistershasfinished*/RTC_WaitForLastTask();}可以通过串口获得实时时钟送过来的当前时间,每秒会自动加1.嵌入式操作系统新技术及应用实验报告丁文斌对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。TIM使用外部信号控制定时器和定时器互连的同步电路。可以通过事件产生中断,中断类型丰富。定时器编程:步骤一系统配置SystemInit();,包括时钟RCC的配置,倍频到72MHZ。步骤二GPIO的配置,使用函数为GPIO_Config();步骤三嵌套中断控制器的配置,使用函数NVIC_Config();初始化的过程略有不同。步骤五编写中断服务程序。voidTIM2_IRQHandler(void){if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET){TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update);switch(state){case0:嵌入式操作系统新技术及应用实验报告丁文斌/*====LED1-ON=======*/GPIO_ResetBits(GPIOB,GPIO_Pin_8);GPIO_SetBits(GPIOB,GPIO_Pin_9);GPIO_SetBits(GPIOE,GPIO_Pin_0);GPIO_SetBits(GPIOE,GPIO_Pin_1);break;case1:GPIO_SetBits(GPIOB,GPIO_Pin_8);GPIO_ResetBits(GPIOB,GPIO_Pin_9);GPIO_SetBits(GPIOE,GPIO_Pin_0);GPIO_SetBits(GPIOE,GPIO_Pin_1);break;case2:GPIO_SetBits(GPIOB,GPIO_Pin_8);GPIO_SetBits(GPIOB,GPIO_Pin_9);GPIO_ResetBits(GPIOE,GPIO_Pin_0);GPIO_SetBits(GPIOE,GPIO_Pin_1);break;case3:GPIO_SetBits(GPIOB,GPIO_Pin_8);GPIO_SetBits(GPIOB,GPIO_Pin_9);GPIO_SetBits(GPIOE,GPIO_Pin_0);GPIO_ResetBits(GPIOE,GPIO_Pin_1);break;default:break;}if(++state>=4){state=0;}}}嵌入式操作系统新技术及应用实验报告丁文斌器(TIM1-5和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获)。每一个捕获/比较通道都是围绕着一个捕获/比较寄存器(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 开学心理健康教育主题班会
- 2025年销售工作方案
- 不同行业标志设计介绍
- 儿童护理与医疗医学汇报模板
- 迎接2025年度八一建军节与活动方案流程
- 多发创伤患者的监测与护理
- 白桦林创意美术
- 关于2025年学校安全维稳应急方案
- 癌痛患者护理查房
- 第1章货币制度
- 专题5 压强 2021年和2022年四川省成都市中考物理模拟试题汇编
- 春季预防传染病课件
- 【数学】三角形 问题解决策略:特殊化课件2024-2025学年北师大版数学七年级下册
- 国网十八项反措(修订版)宣贯
- GB/T 45167-2024熔模铸钢件、镍合金铸件和钴合金铸件表面质量目视检测方法
- 2025年新人教版七年级英语新目标下册教学计划
- 2025年领导干部任前廉政法规知识竞赛试题库及答案(130题)
- 康复科制度及职责
- 玩具工厂订单合同范文
- 《心理B证论文:浅谈小学生自我监控能力的培养》3100字
- 切口引流管非计划拔管不良事件根本原因RCA分析
评论
0/150
提交评论