




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在实验报告中,黑色部分为必写部分,红色部分可以根据个人情况省略,蓝色部分为同学们自己补充部分,最后的思考题必须独立完成,不得抄袭,凡是抄袭思考题,一律0分,实验报告没收,重新写一遍。目录实验1 Led闪烁灯与流水灯2实验2 GPIO键盘检测7实验3 外部中断10实验4 串口收发实验12实验5 SysTick定时器14实验6 RTC日历16实验7 定时器中断18实验8 输入捕获20实验1 Led闪烁灯与流水灯日期: 实验室:电子信息实验楼307实验名称:Led闪烁灯与流水灯实验实验设备:计算机,cortexM3最小系统板,单片机开发板。实验目的:掌握工程建立方法和程序烧写方法,掌握gpio口的数据输出方法。实验步骤:一:工程建立方法:1:新建文件夹,用自己的学号+实验编号作为文件夹名字。2:拷贝一些文件夹到自己的文件夹,cm3,stm32f10x_stdperiph_driver,user 三个文件夹。 3:在自己文件夹根目录下面新建空目录mdk,用来存放工程文件。在mdk目录下建两个空文件夹,list和obj。分别用来存放列表文件和目标代码文件。4:在keil中建立一个工程,工程名字为自己的学号+实验编号B10120101。5:在工程建立的时候选择cpu为stm-103RB.不添加keil自带的stm启动代码。6:option 设置object文件夹为obj文件夹。勾选“creat hex file”,设置listing 为list文件夹。7:c/c+选项卡中,预定义一些代码。使用标准的外设驱动,定义USE_STDPERIPH_DRIVER,设置cpu类型,定义STM32F10X_MD。设置include path,要包含以下文件夹,.cm3,.stm32f10x_stdperphi_driverinc , .user 。8:建立自己的main.c 文件。可以拷贝参考文件.9:关于工程中,需要建立的文件夹。为什么要分很多个不同的文件夹?区分不同的功能模块。user :存放作者编写的文件。包括main函数,中断函数相关的文件。或者一些特殊的自己写驱动文件。cm3:核心的c文件,和cm3文件夹一样的内容。startup文件夹:启动代码文件夹,一定要有一个启动代码,根据芯片不同,代码不同,启动代码在cm3startuparm文件夹中。stdperiphdriver :外设驱动文件夹。二、串口下载方法1:首先要安装串口的驱动程序。PL2303的驱动可以网上下载2:插入下载板;选择自动搜索驱动。3:在设备管理器里面看串口号,比如3#。4:安装flash loader软件。5:打开flash loader。6:选择正确的串口,比如串口3。其他默认。7:单击next,如果报错,说明接线可能有问题。检查是否从系统存储器启动,启动设置为短路BOOT0。复位系统。此时可以看到通信成功,并看到芯片容量。8:单击next,出现相关信息提示,不用修改。9:单击next,选择download to device ,选择需要下载的hex文件。10:单击next ,则download 成功。单击finsh。11:改为用户存储区启动,启动方式修改为断开BOOT0。三、编程步骤1:修改_conf.h配置头文件 屏蔽不需要的驱动头文件2:修改驱动库程序组stdperphidriver,移出不需要的c驱动程序3:#define配置硬件接口宏定义 4:端口时钟打开 RCC_APB2PeriphClockCmd(RCC_GPIO_KEY, ENABLE); 5:用结构体变量对端口的引脚、速度、模式配置GPIO_Init(GPIO_KEY_PORT, &GPIO_InitStructure);4:主函数四、程序代码#include stm32f10x.h/GPIOA送时钟用#define RCC_GPIO_LED RCC_APB2Periph_GPIOA#define GPIO_LED_PORT GPIOA #define GPIO_LED_PIN GPIO_Pin_2 #define RCC_GPIO_KEY RCC_APB2Periph_GPIOA#define GPIO_KEY_PORT GPIOA #define GPIO_KEY_PIN GPIO_Pin_0 void RCC_Configuration(void);/时钟配置void KEY_config(void) /先定义一个结构体变量,用于初始化io的。 GPIO_InitTypeDef GPIO_InitStructure;/使能端口时钟 RCC_APB2PeriphClockCmd(RCC_GPIO_KEY,ENABLE); /对某些引脚GPIO_Pin的速度50MHz和模式pp 赋值 GPIO_InitStructure.GPIO_Pin = GPIO_KEY_PIN;/GPIO_Pin_0 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /这个函数GPIO_Init 用来设置刚才的参数。 GPIO_Init(GPIO_KEY_PORT, &GPIO_InitStructure);/LED/void LED_config(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_GPIO_LED , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_LED_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIO_LED_PORT, &GPIO_InitStructure);int main(void) u8 TempKey;/读取按键的临时变量 RCC_DeInit( ); /配置为8M的内部时钟,ad是4M,其他为8M关闭所有的中断RCC_Configuration(); /sysclk=72M pckl1=36M pclk2=72M SystemInit(); KEY_config(); LED_config(); while (1) /读取key端口状态 并根据端口状态设置led 的状态 TempKey= GPIO_ReadInputDataBit(GPIO_KEY_PORT, GPIO_KEY_PIN);GPIO_WriteBit(GPIO_LED_PORT ,GPIO_LED_PIN, (BitAction)TempKey); void RCC_Configuration(void)/时钟配置 ErrorStatus HSEStartUpStatus; /判断标志变量RCC_HSEConfig(RCC_HSE_ON); /使用外部时钟 / RCC_HSEConfig(RCC_HSE_OFF); /使用内部时钟HSEStartUpStatus = RCC_WaitForHSEStartUp(); /等待外部时钟稳定if(HSEStartUpStatus= SUCCESS)/如果外部晶振启动成功 RCC_HCLKConfig(RCC_SYSCLK_Div1); /HCLK(AHB时钟)值等于系统时钟 RCC_PCLK1Config(RCC_HCLK_Div2); /PCLK1(APB1时钟)值等于HCLK的一半,最高不超过36MHz RCC_PCLK2Config(RCC_HCLK_Div1); /PCLK2(APB2时钟)值等于HCLK,最高可是72MHz FLASH_SetLatency (FLASH_Latency_2); /FLASH时序控制,SYSCLK024MHz /Latency=0. /SYSCLK2548MHz Latency =1. /SYSCLk 4872MHz Latency=2 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /开启FLASH预取指功能/ RCC_PLLConfig(RCC_PLLSource_PREDIV1,RCC_PLLMul_9);/用于cl型cpu的外部震荡直接送入RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);/HSE提供系统时钟,9倍频,也就是72MHz/pll72M RCC_PLLCmd(ENABLE);/启动PLL while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET); /等待PLL稳定 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /系统时钟来自PLL输出 while(RCC_GetSYSCLKSource()!=0x08); /等待系统时钟稳定 五、实验结果:可以看到led灯闪烁和流水灯点亮。五:思考题:1:如果修改为其他端口,比如GPIOB驱动led,怎么修改程序?2:如果需要led流水灯点亮次序反过来,如何修改程序?实验2 GPIO键盘检测日期: 实验室:电子信息实验楼307实验名称:GPIO键盘检测实验实验设备:计算机,cortexM3最小系统板,单片机开发板。实验目的:掌握GPIO口的操作方法,掌握IO口的重映射。实验步骤:一、接线方法神舟I号STM32开发板除了复位按键外,还板载2个功能按键,两个按键分别与PA0,PA1这两个GPIO管脚连接,当按键按下时,对应的GPIO管脚为低电平,反之,当没有按键按下时,对应的GPIO管脚为高电平。3个LED指示灯,由GPIO管脚控制LED灯的亮灭,当GPIO管脚输出低电平时,LED指示灯亮。反之,当GPIO管脚输出高电平时,LED指示灯灭。/此处绘图,同学们根据神舟I号的电路板电路原理图绘图自己画图。二、程序编写#define RCC_GPIO_KEY RCC_APB2Periph_GPIOA#define GPIO_KEY_PORT GPIOA #define GPIO_KEY_PIN GPIO_Pin_0 void KEY_config(void) /先定义一个结构体变量,用于初始化io的。 GPIO_InitTypeDef GPIO_InitStructure;/使能端口时钟 RCC_APB2PeriphClockCmd(RCC_GPIO_KEY,ENABLE); /对某些引脚GPIO_Pin的速度50MHz和模式pp 赋值 GPIO_InitStructure.GPIO_Pin = GPIO_KEY_PIN;/GPIO_Pin_0 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /这个函数GPIO_Init 用来设置刚才的参数。 GPIO_Init(GPIO_KEY_PORT, &GPIO_InitStructure);int main(void) u8 TempKey;/读取按键的临时变量 RCC_DeInit( ); /配置为8M的内部时钟,ad是4M,其他为8M关闭所有的中断RCC_Configuration(); /sysclk=72M pckl1=36M pclk2=72M SystemInit(); KEY_config(); LED_config(); while (1) /读取key端口状态 并根据端口状态设置led 的状态 TempKey= GPIO_ReadInputDataBit(GPIO_KEY_PORT,GPIO_KEY_PIN);GPIO_WriteBit(GPIO_LED_PORT ,GPIO_LED_PIN, (BitAction)TempKey);三、实验现象按下KA0按键,可以看到led0点亮,反之熄灭。四、思考题1:如果Key按键占用了JTAG口,如何通过remap函数把JTAG占用的端口释放出来?remap函数执行了jtag的端口映射后,jtag端口会出现在哪里?2:如果使用GPIOB口 接按键代替GPIOA,是否也有端口被占用?实验3 外部中断日期:2012-11-9 周五 实验室:电子信息实验楼307实验名称: 外部中断实验实验器材:stm32最小系统板,单片机开发板,计算机,串口下载板。实验目的 :掌握中断程序的编写和外部中断的触发方法,实现外部上升沿和下降沿触发。实验原理和步骤: CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。连接单片机和stm32板子的电源,链接串口线。建立工程,在main函数中,让Led1不停闪烁,并打开中断。在stm32_it.c文件中,填写对应的外部中断代码,实现led2在按键按下后同样闪烁,再按下一次,停止闪烁。实验程序内容:void GPIO_Configuration(void)/输入输出管脚配置 GPIO_InitTypeDef GPIO_InitStructure; /配置输出脚PC0控制LED灯 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); /配置输入脚PA0控制按键 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);void NVIC_Configuration(void) /嵌套向量中断控制器配置 NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /选择优先级组别 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; /选择中断通道:EXTI线0中断,因为按键连接的是PA0脚 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /0级抢占式优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /0级副优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /使能引脚作为中断源 NVIC_Init(&NVIC_InitStructure); /调用NVIC_Init固件库函数进行设置void EXTI_Configuration(void) /调用固件库中的GPIO_EXTILineConfig函数, /其中两个参数分别是中断口和中断口对应的引脚号 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; /将中断映射到中断/事件源Line0 EXTI_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相关寄存器中实验结果:下载完程序后,按按键KA0触发中断,LED灯B1状态反转。实验分析与思考:实际操作:修改程序,使中断通过按键KA1触发,同时3个LED灯状态反转,如何修改代码?实验4 串口收发实验日期:2012-11-16 周五 实验室:电子信息实验楼307实验名称: 串口收发实验实验器材:stm32最小系统板,单片机开发板,计算机,串口下载板。实验目的 :掌握串口的配置方法,remap的方法,串口的中断程序编写。实验原理和步骤:串口就是通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。还可以使用DMA方式,实现高速数据通信。USART通过3个引脚与其他设备连接在一起,任何USART双向通信至少需要2个引脚:接受数据输入(RX)和发送数据输出(TX)。RX:接受数据串行输入。通过过采样技术来区别数据和噪音,从而恢复数据。TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。STM32的USART1是连接在APB2上的,而USART2、USART3、UART4、UART5是连接在APB1上的。在USART1_Configuration函数的注释中,配置步骤:(1)打开GPIO和USART1的时钟(2)设置USART1两个管脚GPIO模式(3)配置USART1数据格式、波特率等参数(4)使能USART1接收中断功能(5)最后使能USART1功能因为STM32的GPIOA也是在APB2上的,而且我们配置PA9为推挽复用模式,PA10为浮空输入模式,所以我们要打开GPIOA和AFIO的时钟。 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); USART1_Configuration函数的代码如下: USART_InitStructure.USART_BaudRate = 9600; /波特率=9600 USART_InitStructure.USART_WordLength = USART_WordLength_8b;/数据位字长=8 USART_InitStructure.USART_StopBits = USART_StopBits_1; /停止位=1 USART_InitStructure.USART_Parity = USART_Parity_No; /无奇偶校验位 Parity奇偶性USART_InitStructure.USART_HardwareFlowControl= USART_HardwareFlowControl_None; /无需RTS CTS硬件控制 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);/清除USARTx的待处理标志位 USART_Cmd(USART1, ENABLE);如果需要配置串口中断,则代码如下: USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);/ USART_ITConfig(USART1, USART_IT_TXE, ENABLE); / 使能或者失能指定的USART中断 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; /定义 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /先占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /从占优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /使能定义的中断是否开启。 NVIC_Init(&NVIC_InitStructure);实验结果: 从键盘输入一个字符发送给cpu,对方会立刻返回一个字符。实验分析与思考: 1、如果更换为串口2,应该如何修改程序?2、remap的功能是什么?3、如果要对串口1做remap操作,应该如何修改软件?如何修改硬件?实验5 SysTick定时器日期:2012-11-23 周五 实验室:电子信息实验楼307实验名称: SysTick定时器实验实验器材:stm32最小系统板,单片机开发板,计算机,串口下载板。实验目的 : 掌握systick的使用方法。实验原理和步骤:如果我们需要得到精确的定时,那么我们可以使用STM32中的定时器,例如,SysTick定时器。SysTick是一个24位的递减计数器,它放在NVIC中,主要目的是为了给操作系统提供一个硬件上的中断(滴答中断)。SysTick设定初值并使能后,每经过1个系统时钟周期,计数值就减1。计数到0时,SysTick计数器自动重装初值并继续计数,同时内部的COUNTFLAG标志会置位,触发中断(假如中断使能情况下)。在STM32中,SysTick定时器可以用来作为操作系统的滴答定时器。如果我们的程序不使用操作系统,那么SysTick定时器可以用来产生精确的定时。先对systick做初始化操作:void delay_init(void) RCC_ClocksTypeDef RCC_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级别的函数:void delay_us(u32 Nus) SysTick_SetReload(delay_fac_us * Nus); /* 时间加载 */ SysTick_CounterCmd(SysTick_Counter_Clear);/* 清空计数器 */ SysTick_CounterCmd(SysTick_Counter_Enable);/* 开始倒数 */ do Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); while (Status != SET);/* 等待时间到达 */ SysTick_CounterCmd(SysTick_Counter_Disable); /* 关闭计数器 */SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ 延时n毫秒的函数:void delay_ms(uint16_t nms) uint32_t temp = delay_fac_ms * nms; if (temp 0x00ffffff) temp = 0x00ffffff; SysTick_SetReload(temp); /* 时间加载 */ SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */ SysTick_CounterCmd(SysTick_Counter_Enable); /* 开始倒数 */ do Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT); while (Status != SET); /* 等待时间到达 */ SysTick_CounterCmd(SysTick_Counter_Disable); /* 关闭计数器 */SysTick_CounterCmd(SysTick_Counter_Clear); /* 清空计数器 */实验结果: 在流水灯中,使用systick延时,可以精确控制延时时间。实验分析与思考: 1、系统时钟和systick的关系是什么?2、如果系统时钟发生了变化,systick会有怎样的变化?3、能不能做个宏定义,根据系统时钟,自动修正systick?怎么做?实验6 RTC日历日期:2012-11-30 周五 实验室:电子信息实验楼307实验名称: RTC日历实验实验器材:stm32最小系统板,单片机开发板,计算机,串口下载板。实验目的 :掌握实时时钟的编程方法,掌握时间提取和设置方法实验原理和步骤:实时时钟RTC是一个独立的定时器,可提供时钟日历的功能。 实时时钟RTC支持两种独立的复位类型:APB1,由系统复位。RTC,只能由后备域复位。 实时时钟RTC具有3个专门的可屏蔽中断:闹钟中断秒中断溢出中断 配置过程:1. 查询RTOFF位,直到RTOFF的值变为1 2. 置CNF值为1,进入配置模式3. 对一个或多个RTC寄存器进行写操作4. 清除CNF标志位,退出配置模式5. 查询RTOFF,直至RTOFF位变为1以确认写操作已经完成。仅当CNF标志位被清除时,写操作才能进行,这个过程至少需要3个RTCCLK周期。void RTC_Configuration(void) /* Enable PWR and BKP clocks */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); /* Allow access to BKP Domain */ PWR_BackupAccessCmd(ENABLE); /* Reset Backup Domain */ BKP_DeInit(); /* Enable LSE */ RCC_LSEConfig(RCC_LSE_ON); /* Wait till LSE is ready */ while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) = RESET) /* Select LSE as RTC Clock Source */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); /* Enable RTC Clock */ RCC_RTCCLKCmd(ENABLE); /* Wait for RTC registers synchronization */ RTC_WaitForSynchro(); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Enable the RTC Second */ RTC_ITConfig(RTC_IT_SEC, ENABLE); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Set RTC prescaler: set RTC period to 1sec */ RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */ /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask();void Time_Adjust(void) /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Change the current time */ RTC_SetCounter(Time_Regulate(); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask();实验结果: 可以通过串口获得实时时钟送过来的当前时间,每秒会自动加1.实验分析与思考: 如何由32 位的可编程计数器获得当前时间的年月日时分秒?实验7 定时器中断日期:2012-12-7 周五 实验室:电子信息实验楼307实验名称: 定时器中断实验实验器材:stm32最小系统板,单片机开发板,计算机,串口下载板。实验目的 : 掌握stm32定时器的工作原理和编程方法实验原理和步骤:STM32 系列的 CPU , 有多达 8 个 定时器 , 其中 TIM1 和 TIM8 是能够产生三对 PWM 互补输出的高级定时器,常用于 三相电机 的驱动,它们的时钟由 APB 2的输出产生。其它 6 个为普通定时器,时钟由 APB1 的输出产生。STM32的通用定时器TIM,是一个通过可编程预分频器驱动的16位自动装载计数器构成。 通用TIMx定时器特性包括:具备16位向上,向下,向上/向下自动装载计数器。具备16位可编程预分频器。具备4个独立通道。TIM使用外部信号控制定时器和定时器互连的同步电路。可以通过事件产生中断,中断类型丰富。具备DMA功能。 定时器编程:步骤一 系统配置 SystemInit(); ,包括时钟 RCC 的配置,倍频到 72MHZ 。步骤二 GPIO 的配置,使用函数为 GPIO_Config();步骤三 嵌套中断控制器的配置 ,使用函数 NVIC_Config(); 初始化的过程略有不同。步骤四 定时器的初始化配置 , 使用 Timer_Config(); 步骤五 编写中断服务程序 。void TIM2_IRQHandler(void)if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ) TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);switch(state)case 0:/*=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;case 1: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;case 2: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;case 3: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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年 忻州市高级技工学校招聘考试笔试试题附答案
- 2025年轻钢龙骨项目评估报告
- 地热发电成套设备生产建设项目节能评估报告(节能专)
- 2025年 崇左龙州县公安局招聘辅警考试试题附答案
- 2025年中国速冻米面食品行业发展监测及投资战略研究报告
- 税务师网盘课件2021
- 2025-2030年中国碳化硅砂布卷项目投资可行性研究分析报告
- 2025年中国磁疗胃垫行业市场发展前景及发展趋势与投资战略研究报告
- 中国浙江省天然气市场前景预测及未来发展趋势报告
- 2025年中国江西省水泥行业市场调查研究及投资战略研究报告
- 【完美排版】山东科技出版社二年级下册综合实践活动教案
- 公共政策学(第三版)-课件
- 齐鲁医学Lisfranc-损伤
- 大型钢网架整体提升施工工法
- 干熄焦炉内固_气流动与传热数值模拟毕业论文
- 公司股东变更登记申请书(一变一)
- 供应链金融业务工作开展情况总结汇报
- 基于motor的六相电机绕组分相设置
- 一年级数学学困生转化典型案例
- 广西壮族自治区医院大全
- 电子时钟 Multisim仿真
评论
0/150
提交评论