K1 K2作为中断源控制红色LED灯,实现任意键按一下LED灯亮或者灭

发布者:Xiaoxue666最新更新时间:2024-08-14 来源: cnblogs关键字:中断源  任意键  LED灯 手机看文章 扫描二维码
随时随地手机看文章

  1 #include 'stm32f10x.h'   // 相当于51单片机中的  #include

  2 #include 'stm32f10x_gpio.h'

  3 #include 'stm32f10x_exti.h'

  4 #include 'misc.h'

  5 /*

  6 *K1 K2作为中断源控制红色LED灯,实现任意键按一下LED灯亮或者灭

  7 */

  8 /*GPIO、NVIC、EXTI配置*/

  9 int    peizhi()

 10 {

 11 

 12     /*GPIO配置*/

 13     //   K1配置 PA0

 14 GPIO_InitTypeDef a;

 15 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

 16 a.GPIO_Speed=GPIO_Speed_50MHz;

 17 a.GPIO_Pin=GPIO_Pin_5;

 18 a.GPIO_Mode=GPIO_Mode_Out_PP;

 19 GPIO_Init(GPIOB,&a);

 20 

 21     

 22 /*NVIC嵌套向量中断控制器*/

 23 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);    

 24 NVIC_InitTypeDef b;

 25 b.NVIC_IRQChannel = EXTI0_IRQn;//EXTI0_IRQn外部中断线0中断

 26 b.NVIC_IRQChannelPreemptionPriority = 1;//0 1 2 3 4 

 27 b.NVIC_IRQChannelSubPriority = 1;//0 1 2 3 4 

 28 b.NVIC_IRQChannelCmd = ENABLE;

 29 NVIC_Init(&b);

 30         

 31     /*外部中断EXTI配置*/

 32 EXTI_InitTypeDef c;

 33 c.EXTI_Line=EXTI_Line0;//外部路线0 和13

 34 c.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式

 35 c.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿为中断请求

 36 c.EXTI_LineCmd=ENABLE;//使能

 37 EXTI_Init(&c);//指向结构体EXTI_InitTypeDef的指针a

 38 

 39 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);//选择GPIO管脚用作外部中断线路

 40 

 41 

 42 

 43 //K2配置  PC13

 44 //以下K2的配置基于K1配置的,就是说K2很多配置和K1相同的,只是把不同的配置写下来

 45 

 46 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);

 47 GPIO_Init(GPIOB,&a);

 48 

 49 b.NVIC_IRQChannel = EXTI15_10_IRQn;

 50 NVIC_Init(&b);

 51 

 52 c.EXTI_Line = EXTI_Line13;

 53 EXTI_Init(&c);

 54 

 55 GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource13);

 56 

 57 }

 58 

 59 

 60 /*主函数*/

 61 int main(void)

 62 {

 63     peizhi();

 64     

 65 }

 66 

 67 /*中断服务函数*/

 68 void EXTI0_IRQHandler(void)

 69 {

 70     //确保是否产生EXTI line中断

 71     if(EXTI_GetITStatus(EXTI_Line0)!=RESET) // 检查指定的EXTI线路触发请求发生与否

 72     {

 73         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//

 74         {

 75         GPIO_SetBits(GPIOB,GPIO_Pin_5);

 76         }

 77         else

 78         {    

 79         GPIO_ResetBits(GPIOB,GPIO_Pin_5);

 80         }

 81         EXTI_ClearITPendingBit(EXTI_Line0);

 82     }

 83 }

 84 

 85     void EXTI15_10_IRQHandler(void)

 86 {

 87     //确保是否产生EXTI line中断

 88     if(EXTI_GetITStatus(EXTI_Line13)!=RESET) // 检查指定的EXTI线路触发请求发生与否

 89     {

 90         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//

 91         {

 92         GPIO_SetBits(GPIOB,GPIO_Pin_5);

 93         }

 94         else

 95         {    

 96         GPIO_ResetBits(GPIOB,GPIO_Pin_5);

 97         }

 98         EXTI_ClearITPendingBit(EXTI_Line13);

 99     }        

100 }


关键字:中断源  任意键  LED灯 引用地址:K1 K2作为中断源控制红色LED灯,实现任意键按一下LED灯亮或者灭

上一篇:用STM32CudeMX 点亮红色LED灯(软件操作步骤为主)
下一篇:外部中断0(含知识点)

推荐阅读最新更新时间:2024-11-08 04:51

80c51是几位单片机 80c51单片机有几个中断
  80c51是几位单片机   80C51是一种8位微处理器,也被称为8051,由Intel公司推出。它是最早的商用单片机之一,由于它的简单易用、灵活可靠,被广泛应用于许多嵌入式系统中。在80C51系列中,最常见的型号包括AT89C51和AT89S52等。   80c51单片机寻址范围有多少   80C51单片机的寻址范围取决于其具体的型号和存储器结构。在最常见的AT89C51和AT89S52型号中,其寻址范围如下:   内部RAM寻址范围:0x00-0x7F(128字节)   内部ROM寻址范围:0x0000-0xFFFF(64KB)   特殊功能寄存器(SFR)寻址范围:0x80-0xFF(128字节)   外部扩展RAM
[单片机]
设计高效高可靠LED灯具的五个忠告
进入2011年,澳大利亚已经率先禁止使用白炽灯,这为LED灯具的大规模普及揭开了序幕,另外,随着欧盟各国、日本、加拿大等国家将在2012年禁止使用白炽灯,LED灯具的照明普及率会进一步提升,这让掘金绿色照明革命的中国数千家LED灯具厂商欢欣鼓舞――因为一个巨大的市场就要开启,而这次唱主角的是中国厂商。不过,应当看到,LED灯具要普及,不但需要大幅度降低成本,更需要解决能效和可靠性的难题,如何解决这些难题,Power Integrations市场营销副总裁Doug Bailey分享了高效高可靠LED灯具设计的五个忠告。   一、 不要使用双极型功率器件   Doug Bailey指出由于双极型功率器件比MOSFET便宜,一
[电源管理]
设计高效高可靠<font color='red'>LED灯</font>具的五个忠告
大功率LED灯珠参数及设计技巧
   LED灯珠 参数介绍:    1、亮度    LED 的亮度不同,价格不同。   灯杯:一般亮度为60-70lm;   球泡灯:一般亮度为80-90lm.   注:1W亮度为60-110lm3W亮度最高可达240lm5W-300W是集成芯片,用串/并联封装,主要看多少电流,电压,几串几并。   1W红光,亮度一般为30-40lm;1W绿光,亮度一般为60-80lm;1W黄光,亮度一般为30-50lm;1W蓝光,亮度一般为20-30lm.    LED透镜 :一次透镜一般用PMMA、PC、光学玻璃、硅胶(软硅胶,硬硅胶)等材料。角度越大出光效率越高,用小角度的LED透镜,光线要射得远的。    2、抗静电能力   抗静
[电源管理]
大功率LED灯驱动电源的技术方案和功能模组
大功率LED灯驱动电源的技术方案和功能模组 大功率发光二极体用於一般照明是本世纪的新课题,其节能、安全、长寿命的综合优势将引发下一轮照明产业的革命。但是,大功率发光二极体是低电压单向导电器件,正常工作时的正向压降3-4伏。要用於一般照明必须解决电源变换的问题。 用原始电源给发光二极体供电有4种情况:低电压驱动发光二极体、过渡电压驱动发光二极体、高电压驱动发光二极体、市电驱动发光二极体。不同的情况在电源变换器的技术实现上有不同的方案。下面我们简要的介绍一下这几种情况下的电源驱动方法及其应用产品。 一、低电压驱动发光二极体 低电压驱动就是指用低於发光二极体正向导通压降的电压驱动发光二极体,如一节普通乾电池或者一节镍铬/镍氢
[模拟电子]
带散热监控功能的智能LED照明控制
  散热管理是新型 LED灯 中最困难、要求最严格且成本最高的设计部分。如果不进行充分的散热管理,将会造成照明失效或火灾等灾难性后果。不过,LED灯的散热管理是整个设计方案中最复杂、要求最严格且成本最高的部分。本文将探讨如何实施负温度系数(NTC)散热管理,以充分提高 LED设计 的安全性并大幅降低功耗。   传统的白炽灯泡中,不与任何东西直接接触的灯丝是唯一热源。而对于LED灯而言, LED 即是光源,LED的散热直接与LED灯泡相接触。这种直接接触是受LED与 驱动 器电路的连接方式使然。为了实现散热,必须将热量从LED和驱动器电路中释放出去或者加以有效管理,同时这也是让LED灯保持长期工作的基本前提。   为了解散热管理的
[电源管理]
带散热监控功能的智能LED照明<font color='red'>控制</font>
嵌入式STM32学习笔记(2)——点亮LED灯及用中断让其闪烁
这里直接开始码代码了,至于前期的准备工作比如配置MDK-keil,或配置IAR等,大家可以在网上找对应的教程,这里不赘述了;直接讲代码如何撸吧,代码里我做了详细注释: 1)编译器IAR8,系统win10; 2)板子:STM32F103C8T6核心板,如下: 3)下载器:ST-LINK/V2仿真下载器; 4)板子上LED对应的引脚是GPIOC, GPIO_Pin_13;在IAR对应的stm32F103X模板DRIVER目录下添加:led.c,led.h,timer.c,timer.h文件,如下: 5)led.c 代码如下: #include led.h /*LED_G 驱动 GPIO 初始化函数*/ vo
[单片机]
嵌入式STM32学习笔记(2)——点亮<font color='red'>LED灯</font>及用<font color='red'>中断</font>让其闪烁
浅谈谈LED灯控制技术
LED控制 技术是 LED -NET系统是以DMX512协议和 计算机 网络 技术TCP/IP协议为基础开发出 LED灯饰 照明控制系统。TCP/IP协议(Transfer controln protocol/Internet protocol)名为传输控制/网际协议。 现在控制系统有DMX512控制台用标准数字 接口 控制调光器的方式,EIA485(RS485)属于接口,点压,电流等的“电”端,以及串行SPI控制方式,以级联的方式进行控制,主要用于 LED显示屏 设计的,而以RS485联网控制方式,既每个 LED灯具 内置一片单片机进行控制并连接到RS485 总线 上,通过一台 控制器 对RS485总线上每个单片机控制,
[电源管理]
解析LED灯具智能节能监控系统的优良解决方案
城市路灯照明是人们日常生活中必不可少的公共设施。据了解,当前我国路灯照明耗电量约占总耗电量的15%。面对供电的紧张局面,人工控制、路灯巡查成为了必不可少的现实工作,同时也是一项需要耗费大量人力物力的工作。现有传统的节电措施仅仅靠夜晚间隔关灯、调整路灯开关时间、用电紧张时关闭景观照明等举措来实现,方法单纯且收效甚微。在当前 LED 路灯在全国探索前行的道路上,更需要结合LED路灯自身特点探索其独属的LED控制系统。 据了解,目前市场应用于LED驱动电源管理、LED灯具的智能节能监控的解决方案可谓凤毛麟角。 优势明显的二次节能监控系统 对于路灯、隧道灯、广场用灯、工业照明等如全面实施智能控制管理,将节省80%以上的人工查检
[电源管理]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved