历史上的今天
返回首页

历史上的今天

今天是:2025年04月10日(星期四)

正在发生

2019年04月10日 | stm32初学之LED按键中断

2019-04-10 来源:eefocus

首先,我们选定需要控制的特定引脚,


然后为其配置特定的功能,


最后就可以通过按键控制LED的亮与灭了。


对于LED和按键的初始化比较相似,都是通过GPIO_InitTypeDef结构体来配置。


typedef struct

{

  uint16_t GPIO_Pin; //引脚号

  GPIOSpeed_TypeDef GPIO_Speed; //配置速度

  GPIOMode_TypeDef GPIO_Mode; //工作模式

}GPIO_InitTypeDef;

这里还可以通过 GPIO_SetBits(GPIOC,GPIO_Pin_3);和GPIO_ResetBits(GPIOC,GPIO_Pin_3) 来使LED获得高低电平,从而使LED亮灭。



初始化GPIO后,就开始配置外部中断了,这也是通过结构体来配置。


一般配置一个I/O的步骤为:


1.  使能 EXTIx 线的时钟和第二功能 AFIO 时钟


2.  配置 EXTIx 线的中断优先级


3.   配置 EXTI 中断线 I/O


4.   选定要配置为 EXTI 的 I/O 口线和 I/O 口的工作模式


5.  EXTI 中断线工作模式配置


这里涉及到三个结构体:GPIO_InitTypeDef、EXTI_InitTypeDef和NVIC_InitTypeDef,配置方法大同小异,多看看stm32固件库手册就行了。


typedef struct


{


  uint32_t EXTI_Line;


  EXTIMode_TypeDef EXTI_Mode;


  EXTITrigger_TypeDef EXTI_Trigger;


  FunctionalState EXTI_LineCmd;


}EXTI_InitTypeDef;



typedef struct


{


  uint8_t NVIC_IRQChannel;


  uint8_t NVIC_IRQChannelPreemptionPriority;


  uint8_t NVIC_IRQChannelSubPriority;


  FunctionalState NVIC_IRQChannelCmd;


} NVIC_InitTypeDef;


NVIC 是属于Cortex 内核的器件,不可屏蔽中断 (NMI)和外部中断都由它来处理,而SYSTICK 不是由 NVIC 来控制的,在NVIC中配置中断优先级。

弄完这些之后,就差不多了,接下来就是按照启动文件 startup_stm32f10x_hd.s 中的中断向量表定义来写中断函数了,而在stm32中stm32f10x_it.c 文件是专门用来存放中断服务函数的。所以在这下面写上中断函数就ok了。这里注意的是中断服务函数名必须要跟中断向量表中的一致。

最后让程序进入死循环,通过按键中断来控制就行了。


推荐阅读

史海拾趣

EM Devices Corporation公司的发展小趣事

作为一家有社会责任感的企业,EM Devices Corporation不仅关注自身的经济效益,还积极履行社会责任。公司严格遵守环保法规,采取了一系列环保措施,减少生产过程中的污染排放。此外,公司还积极参与公益事业,为社会做出了积极的贡献。这种可持续发展的理念为公司赢得了广泛的社会赞誉和尊重。

台湾双羽公司的发展小趣事

在成为全球领先的电子企业之后,富士通并没有停下脚步。公司开始积极拓展海外市场,将先进的技术和产品带到世界各地。通过在全球各地设立分支机构、与当地企业建立合作关系等方式,富士通成功地将自己的业务版图扩展到了全球60多个国家和地区。这一过程中,富士通不仅为当地市场带来了先进的技术和产品,也促进了全球电子产业的交流与合作。

Delta Electronics Manufacturing Corp公司的发展小趣事

随着公司实力的不断增强,Delta开始积极拓展全球市场。公司通过设立海外分支机构、参加国际展会等方式,不断拓宽销售渠道,提升品牌知名度。同时,Delta还与国际知名企业展开合作,共同开发新产品,扩大市场份额。如今,Delta的产品已远销全球多个国家和地区,成为国际电源市场的领军企业之一。

Celduc Relais公司的发展小趣事

Celduc Relais公司自创立之初,便以技术创新为核心驱动力。在公司的早期发展阶段,研发团队成功开发了一款具有颠覆性的继电器产品,该产品在性能、稳定性和寿命等方面均达到了行业领先水平。这一突破性的技术创新不仅为公司赢得了市场的广泛认可,也为后续的产品线扩展和技术升级奠定了坚实基础。

友盟(AP)公司的发展小趣事

友盟(AP)公司在电子行业的崛起,始于其坚持不懈的技术创新。在创立初期,友盟就敏锐地捕捉到了移动互联网快速发展的趋势,投入大量资源进行技术研发。公司团队深入研究用户行为分析、大数据分析等前沿技术,不断推出具有创新性的产品和服务。通过精准的数据分析和个性化推荐,友盟成功帮助众多合作伙伴提升了用户体验和业务效率,逐渐在行业内树立起了良好的口碑。

BURGESS公司的发展小趣事

2001年对BURGESS来说是具有重要意义的一年。在这一年,BURGESS荣获了女皇赏,这是对其卓越业绩和贡献的极高认可。同时,BURGESS还售出了由Lurssen船厂制造的当时世界上最大的私人超级游艇,这一成就再次证明了其在游艇经纪行业的卓越地位。

问答坊 | AI 解惑

Signal Integrity Analysis of High-speed, High-Pin-Count Digital Packages

Signal Integrity Analysis of High-speed, High-Pin-Count Digital Packages…

查看全部问答>

一个老工程师对理工科学生的忠告

  好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为 ...…

查看全部问答>

请教WINCE sleep wakeup问题

大家好,请教一个有关sleep和wakeup的问题。 我们知道,在系统进入睡眠的时候,会调用OEMPowerOff(),在这里面,系统会关闭外设电源,保存寄存器,然后sleep,当外部中断发生的时候,会从睡眠的地方起来。但小弟,这里有个疑问,请教大家了。我把 ...…

查看全部问答>

驱动dll的问题

在编译一个驱动dll后按照如下方法绑定到nb0中: 在project.reg中添加: [HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\MyDriver]         \"Dll\"=\"MyDriver.dll\"         \"Prefix\"=\"XXX\"   &n ...…

查看全部问答>

FPGA 的JTAG 端口下载

根据ALTERA官方FAE(现场应用工程师)的强烈建议,请注意不要随意带电插拔你的JTAG下载接口,否则会损坏FPGA芯片的JTAG口信号管脚。  现象:  在排除了下载线的问题后,还是不能访问FPGA的JTAG口,那么很有可能你的FPGA芯片的JTAG口已经损坏。 ...…

查看全部问答>

关于IO重映射的问题

                                 请问MCU32中哪些模块使用时要用到remap啊,这个IO重映射在什么情况下才是必需的? 目前知道几个TIM需要remap…

查看全部问答>

求解:TI的MBUS芯片TSS721的TX、RX收发数据问题!!

最近用TI得TSS721焊了一个MBUS从站电路,本来已经正常工作了一段时间,但是昨天突然不行了。具体情况:用串口调试软件,发现TSS721的TX在RX悬空的情况下,发送数据正常;当RX、TX一起连接了串口,串口调试软件就看不见TX发送的数据了。 [ 本帖最后 ...…

查看全部问答>

Msp430奇怪现象

以前在回帖中回过。 $(\'flv_vy9\').innerHTML=(AC_FL_RunContent(\'width\', \'500\', \'height\', \'375\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'http://www.tudou.com/v/izHL-fNtKs8/&rpid=10654 ...…

查看全部问答>

第三回 呼吸灯 玩砸了 linux开发怎么搞?

本帖最后由 astwyg 于 2014-7-12 23:23 编辑 应老大号召,试试写个呼吸灯,裸机的方法直接抛弃了,那是51和M3该干的事,rawOS还没怎么看,只能硬着头皮用linux,在shell中尝试了下面代码控制LED:echo 0 > brightnessecho 1 > brightness 可以控制亮灭 ...…

查看全部问答>