STM32中断程序(带详细注释)_第1页
STM32中断程序(带详细注释)_第2页
STM32中断程序(带详细注释)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文档免费下载,如果你觉得对你有帮助,情给好评并下载,我需要财富值,谢谢!/*STM32F103外部中断*长沙理工大学3+1实验室*2012年9月22日*/#includestm32f10x.h/配置系统时钟*void RCC_Configuration(void)ErrorStatus HSEStartUpStatus; /将外部时钟设置成枚举变量RCC_DeInit(); /复位RCC外部设备寄存器到默认值RCC_HSEConfig(RCC_HSE_ON); /打开外部时钟HSEStartUpStatus=RCC_WaitForHSEStartUp(); /检测外部时钟是否就绪if(HSEStartUpStatus=SUCCESS) /如果就绪(SUCCESS)则进行下一步程序FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /开启flash缓冲功能(使能缓存)FLASH_SetLatency(FLASH_Latency_2); /延时两个周期RCC_HCLKConfig(RCC_SYSCLK_Div1); /设置AHB时钟为不分频的系统时钟RCC_PCLK1Config(RCC_HCLK_Div2); /设置AP1为2分频系统时钟(不能超过36M)RCC_PCLK2Config(RCC_HCLK_Div1); /设置AP1为为系统时钟频率(前面AHB给定的时钟)RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); /设置外部时钟为PLL的上输入时钟并且倍频9RCC_PLLCmd(ENABLE); /使能PLL时钟while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET) /检测PLL是否就绪 RESET:就绪RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /配置外部时钟作为系统的时钟while(RCC_GetSYSCLKSource()!=0x08) /检测外部时钟是否作为PLL的输入时钟/配置GPIO函数*/功能:配置GPIO的输入输出模式void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure; /定义GPIO初始化函数RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); /使能GPIOA和GPIOB的时钟,配置其复用模式/配置GPIO口的输入*GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; /配置1脚为输入脚 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; /配置GPIO为上拉输入模式GPIO_Init(GPIOA,&GPIO_InitStructure); /把配置好的GPIO口初始化一下 / 配置GPIO的输出*GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3); /将PA2和PA3拉高GPIO_SetBits(GPIOB,GPIO_Pin_2); /将PA2和PA3拉高GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; /配置0脚为输出脚GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; / 配置GPIO为推挽输出模式GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; /配置GPIO口的输出速率是50MGPIO_Init(GPIOA,&GPIO_InitStructure); /使能GPIOA口 /外部中断函数*void EXTI_Configuration(void)EXTI_InitTypeDef EXTI_InitStructure; /初始化外部中断寄存器RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); /使能复用功能IO时钟EXTI_ClearITPendingBit(EXTI_Line1); /清除IO口中断清除挂起位(清除中断标志位)EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt; /设置外部中断触发(另一种是事件触发)EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling; /设置中断触发方式:上下沿触发方式EXTI_InitStructure.EXTI_Line=EXTI_Line1; /选择中断线路为1(即选择那个IO作为中断输入)EXTI_InitStructure.EXTI_LineCmd=ENABLE; /使能外部中断EXTI_Init(&EXTI_InitStructure); /初始化GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1); /将GPIOA1挂到中断上/中断分组函数*void NIVC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure; /初始化中断分组函数/NVIC_PriorityGroupConfig:设置优先级分组(下面一句)NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); /设置抢占式优先级:先占优先级0位,从优先级4位NVIC_InitStructure.NVIC_IRQChannel=EXTI1_IRQn; /将中断挂到GPIO1脚外部中断线1上NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; /设置响应式优先级:先占优先级1位,从先级3位NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; / 使能设置的外部中断通道请求NVIC_Init(&NVIC_InitStructure); /初始化/中断服务函数*void EXTI1_IRQHandler(void)if(EXTI_GetITStatus(EXTI_Line1)!=RESET)/添加中断处理函数GPIO_ResetBits(GPIOA,GPIO_Pin_2); /点亮ledEXTI_ClearFlag(EXTI_Line1); /清除标志中断位EXTI_ClearITPendingBit(EXTI_Lin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论