STM中断程序带详细注释Word文件下载.doc

上传人:wj 文档编号:1452293 上传时间:2023-04-30 格式:DOC 页数:3 大小:20KB
下载 相关 举报
STM中断程序带详细注释Word文件下载.doc_第1页
第1页 / 共3页
STM中断程序带详细注释Word文件下载.doc_第2页
第2页 / 共3页
STM中断程序带详细注释Word文件下载.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

STM中断程序带详细注释Word文件下载.doc

《STM中断程序带详细注释Word文件下载.doc》由会员分享,可在线阅读,更多相关《STM中断程序带详细注释Word文件下载.doc(3页珍藏版)》请在冰点文库上搜索。

STM中断程序带详细注释Word文件下载.doc

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模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2