STM中断程序带详细注释Word下载.doc
- 文档编号:13162399
- 上传时间:2022-10-07
- 格式:DOC
- 页数:3
- 大小:20KB
STM中断程序带详细注释Word下载.doc
《STM中断程序带详细注释Word下载.doc》由会员分享,可在线阅读,更多相关《STM中断程序带详细注释Word下载.doc(3页珍藏版)》请在冰豆网上搜索。
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的上输入时钟并且倍频9
RCC_PLLCmd(ENABLE);
//使能PLL时钟
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)//检测PLL是否就绪 RESET:
就绪
{}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//配置外部时钟作为系统的时钟
while(RCC_GetSYSCLKSource()!
=0x08)//检测外部时钟是否作为PLL的输入时钟
}
}
//配置GPIO函数************************************************
//功能:
配置GPIO的输入输出模式
voidGPIO_Configuration(void)
GPIO_InitTypeDefGPIO_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口的输出速率是50M
//使能GPIOA口
//外部中断函数*************************************************************************************
voidEXTI_Configuration(void)
EXTI_InitTypeDefEXTI_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挂到中断上
//中断分组函数***************************************************************
voidNIVC_Configuration(void)
NVIC_InitTypeDefNVIC_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);
//初始化
//中断服务函数********************************************************
voidEXTI1_IRQHandler(void)
if(EXTI_GetITStatus(EXTI_Line1)!
=RESET)
//添加中断处理函数
GPIO_ResetBits(GPIOA,GPIO_Pin_2);
//点亮led
EXTI_ClearFlag(EXTI_Line1);
//清除标志中断位
EXTI_ClearITPendingBit(EXTI_Line1);
//清除外部中断线1的挂起位
//主函数***********************************************************************
intmain(void)
RCC_Configuration();
//调用系统时钟函数
GPIO_Configuration();
//调用GPIO
NIVC_Configuration();
EXTI_Configuration();
while
(1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM 中断 程序 详细 注释