Stm32按键中断使LED灯闪烁
来源:互联网 发布:用excel做小型数据库 编辑:程序博客网 时间:2024/04/30 20:37
main.c源代码:
/**说明:*PA0:KEY1;PA1:KEY2;*PA2:LED1;PA3:LED2;*PA9:USART1_TX;PA10:USART1_RX*/#include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" #include "stm32f10x_crc.h"#include "stm32f10x_exti.h"#include "system_stm32f10x.h" #include "misc.h"void RCC_Configuration(void); void GPIO_Configuration(void); void EXTI_Configuration(void); void NVIC_Configuration(void);int main(){ RCC_Configuration(); GPIO_Configuration(); EXTI_Configuration(); NVIC_Configuration(); while(1);}void RCC_Configuration(void) { SystemInit(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; //LED GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); //KEY GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); }void EXTI_Configuration(void)//外部中断初始化配置{ EXTI_InitTypeDef EXTI_InitStructure; EXTI_ClearITPendingBit(EXTI_Line0); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);}void NVIC_Configuration(void)//配置中断优先级{ NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);}
stm32f10x_it.c源代码(因为用的是外部中断线0中断EXTI0_IRQn,所以直接修改stm32f10x_it.c里面的EXTI0_IRQHandler函数):
/*引入头文件*/#include "..\include\stm32f10x.h" #include "..\include\stm32f10x_it.h"#include "..\include\stm32f10x_exti.h"#include "..\include\stm32f10x_rcc.h"#include "..\include\stm32f10x_gpio.h" #include "..\include\misc.h"......void delay_ms(u16 time) { u16 i=0; while(time--) { i=12000; while(i--); } }void EXTI0_IRQHandler(void){ if(EXTI_GetITStatus(EXTI_Line0)==SET) { GPIO_WriteBit(GPIOA,GPIO_Pin_2,(BitAction)(Bit_SET-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_2))); GPIO_WriteBit(GPIOA,GPIO_Pin_3,(BitAction)(Bit_SET-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_3))); } delay_ms(100);//下降沿销抖 while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)!=Bit_SET); delay_ms(100);//上升沿销抖 while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)!=Bit_SET); EXTI_ClearITPendingBit(EXTI_Line0);}
不要忘记了stm32f10x_it.c里面所有方法的声明头文件stm32f10x_it.h:
#ifndef __STM32F10x_IT_H#define __STM32F10x_IT_H/* Includes ------------------------------------------------------------------*//* Exported types ------------------------------------------------------------*//* Exported constants --------------------------------------------------------*//* Exported macro ------------------------------------------------------------*//* Exported functions ------------------------------------------------------- */ void NMIException(void);void HardFaultException(void);void MemManageException(void);void BusFaultException(void);void UsageFaultException(void);void DebugMonitor(void);void SVCHandler(void);void PendSVC(void);void SysTickHandler(void);void WWDG_IRQHandler(void);void PVD_IRQHandler(void);void TAMPER_IRQHandler(void);void RTC_IRQHandler(void);void FLASH_IRQHandler(void);void RCC_IRQHandler(void);void EXTI0_IRQHandler(void);void EXTI1_IRQHandler(void);void EXTI2_IRQHandler(void);void EXTI3_IRQHandler(void);void EXTI4_IRQHandler(void);void DMA1_Channel1_IRQHandler(void);void DMA1_Channel2_IRQHandler(void);void DMA1_Channel3_IRQHandler(void);void DMA1_Channel4_IRQHandler(void);void DMA1_Channel5_IRQHandler(void);void DMA1_Channel6_IRQHandler(void);void DMA1_Channel7_IRQHandler(void);void ADC1_2_IRQHandler(void);void USB_HP_CAN_TX_IRQHandler(void);void USB_LP_CAN_RX0_IRQHandler(void);void CAN_RX1_IRQHandler(void);void CAN_SCE_IRQHandler(void);void EXTI9_5_IRQHandler(void);void TIM1_BRK_IRQHandler(void);void TIM1_UP_IRQHandler(void);void TIM1_TRG_COM_IRQHandler(void);void TIM1_CC_IRQHandler(void);void TIM2_IRQHandler(void);void TIM3_IRQHandler(void);void TIM4_IRQHandler(void);void I2C1_EV_IRQHandler(void);void I2C1_ER_IRQHandler(void);void I2C2_EV_IRQHandler(void);void I2C2_ER_IRQHandler(void);void SPI1_IRQHandler(void);void SPI2_IRQHandler(void);void USART1_IRQHandler(void);void USART2_IRQHandler(void);void USART3_IRQHandler(void);void EXTI15_10_IRQHandler(void);void RTCAlarm_IRQHandler(void);void USBWakeUp_IRQHandler(void);void TIM8_BRK_IRQHandler(void);void TIM8_UP_IRQHandler(void);void TIM8_TRG_COM_IRQHandler(void);void TIM8_CC_IRQHandler(void);void ADC3_IRQHandler(void);void FSMC_IRQHandler(void);void SDIO_IRQHandler(void);void TIM5_IRQHandler(void);void SPI3_IRQHandler(void);void UART4_IRQHandler(void);void UART5_IRQHandler(void);void TIM6_IRQHandler(void);void TIM7_IRQHandler(void);void DMA2_Channel1_IRQHandler(void);void DMA2_Channel2_IRQHandler(void);void DMA2_Channel3_IRQHandler(void);void DMA2_Channel4_5_IRQHandler(void); #endif /* __STM32F10x_IT_H *//******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
0 0
- Stm32按键中断使LED灯闪烁
- Stm32定时器中断使LED灯闪烁
- stm32 ucos LED灯延时闪烁+按键闪烁+串口输出
- stm32初学之LED按键中断
- 中断-按键控制LED灯
- 第四节:累计定时中断次数使LED灯闪烁。
- 开两个中断,一个周期5ms,另一个周期10s;5毫秒中断中采样AD按键,根据不同的电压让不同的LED灯闪烁;10s中断让一个LED灯每20s闪烁一次
- Stm32按键输入控制LED灯
- tiny 6410按键中断控制LED灯
- STM32的LED闪烁实验
- LPC2124--GPIO按键控制LED灯的闪烁
- STM32实例之LED灯闪烁控制以及相关注意事项
- STM32按键扫描/按键中断/外部中断
- 按键中断,点亮LED实验
- mini2440 按键中断LED 实验
- OK6410按键中断点亮lED
- MSP430按键控制LED闪烁频率
- mini2440按键中断控制led灯遇到的问题
- JavaScript常用正则
- 设计模式之行为型模式(11种)
- 带头结点的链表尾插法C++实现
- Android平台可用的OpenCV库编译方法
- 微博,如何敲开社会化资产这扇门?
- Stm32按键中断使LED灯闪烁
- 如何用NDK创建一个标准的交叉编译工具链(Cross Toolchain)
- 如何用cacti监控多台ubuntu 机器的IO, memory, CPU, network
- 2015年流行的网页设计趋势
- iOS自带扫描器--NSScanner
- js控制mediaplayer
- 收藏:木头哥提供的资源coco2dx
- LINUX的 ulimit 命令详解
- Illegal resource reference: @*android resources are private and not always present 解决方案