历史上的今天
今天是:2025年07月21日(星期一)
2018年07月21日 | STM32用中断控制LED小灯的亮灭
2018-07-21 来源:eefocus
STM32f103最小系统板
PC13 接一个LED小灯
首先配置LED灯
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//初始化PC13为推挽式输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
然后配置按键键盘为上拉式输入和配置EXTI函数
void EXTI_KEY_Init(void)//配置PB11为下降沿触发
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
//配置管脚时钟和复用时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
//配置GPIO为上拉输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//配置GPIO口为外部中断模式
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource11);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource10);
//配置EXTI_LINE10中断触发模式
EXTI_InitStructure.EXTI_Line = EXTI_Line10;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
EXTI_InitStructure.EXTI_Line = EXTI_Line11;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
//配置EXTI的中断优先级
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void EXTI15_10_IRQHandler(void)
{
if(EXTI_GetFlagStatus(EXTI_Line10) == 1) //判断哪个按键输入
{
LED = 0;
EXTI_ClearFlag(EXTI_Line10);
}
if(EXTI_GetFlagStatus(EXTI_Line11) == 1) //判断哪个按键输入
{
LED = 1;
EXTI_ClearFlag(EXTI_Line11);
}
}
在主函数里初始化LED EXTI函数
int main(void)
{
NVIC_Configuration();
LED_Init();
EXTI_KEY_Init();
delay_init();
while(1)
{
}
}
史海拾趣
|
摘要:简要介绍了美国DALLAS公司的新型时钟日历芯片DS12C887的功能特性和内部控制寄存器参数,给出了DS12C887与8031单片机的电路连接图,同时给出了用C51编写的初始化程序和获取内部时间的程序。关键词:时钟 单片机 DS12C887 1 器件特性 &nb ...… 查看全部问答> |
|
windows mobile 6.0 仿真器安装SQL Anywhere 11 遇到的问题,实在无奈 小弟现在尝试windows mobile 开发,DBMS选择了SQL Anywhere 11,在安装时遇到了前所未有的困难,试了N遍,始终提示安装不成功 希望各位前辈给个解决办法 下面给出我的开发环境和工具 OS:vista home basic IDE:visual studio 2008 SDK: ...… 查看全部问答> |
|
你们有多少人用单片机/ARM/DSP是不用操作系统用裸跑的? 我一直学习的是在操作系统下开发软件,现在在看驱动,觉得要是不用操作系统的话,直接裸跑应该挺有难度,对设备的配置和系统的要求都很高。所以特地来问下,你们做这一类开发的,有多少是不用操作系统的?… 查看全部问答> |
|
在WINCE系统中,我的定时器2秒一次,期间有读串口线程,刚开始定时器运行正常,几个小时候就运行的越来越慢,并没有死机,请问是什么原因?… 查看全部问答> |
|
如何在bsp中的tchpdd.cpp 和 ser2410_hw.c使用同一个变量 如题:如何在bsp中的tchpdd.cpp 和 ser2410_hw.c使用同一个变量 我需要在这两个文件当中使用同一个变量,但这两个文件不同属于一个驱动,分别是串口的驱动和触摸屏的驱动,因此我需要找到一个方法能在这两个文件当中使用同一个变量的方法,或者说 ...… 查看全部问答> |
|
2. 全新OV7660摄像头,30W像素,带镜头,带24M有源晶振,板载1.8V 2.5V LDO!! 数量600个, 要一个单价50元一个,要20个45元一个,要50个40元一个,全要35元一个 2012-10-10 14:04 上传 下载附 ...… 查看全部问答> |
|
各位大侠,你们好! 我现在所在的公司想做一个智能遥控器,用触摸控制各种操作,当然也带有普通的按键,在网上了解了一下,目前有这种种遥控器的好像不多,康佳有这种遥控器,还有乐视TV推出超级遥控器,发现他们都是用RF来实现的, ...… 查看全部问答> |




