历史上的今天
今天是: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了。这里注意的是中断服务函数名必须要跟中断向量表中的一致。
最后让程序进入死循环,通过按键中断来控制就行了。
史海拾趣
|
Signal Integrity Analysis of High-speed, High-Pin-Count Digital Packages Signal Integrity Analysis of High-speed, High-Pin-Count Digital Packages… 查看全部问答> |
|
好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为 ...… 查看全部问答> |
|
大家好,请教一个有关sleep和wakeup的问题。 我们知道,在系统进入睡眠的时候,会调用OEMPowerOff(),在这里面,系统会关闭外设电源,保存寄存器,然后sleep,当外部中断发生的时候,会从睡眠的地方起来。但小弟,这里有个疑问,请教大家了。我把 ...… 查看全部问答> |
|
根据ALTERA官方FAE(现场应用工程师)的强烈建议,请注意不要随意带电插拔你的JTAG下载接口,否则会损坏FPGA芯片的JTAG口信号管脚。 现象: 在排除了下载线的问题后,还是不能访问FPGA的JTAG口,那么很有可能你的FPGA芯片的JTAG口已经损坏。 ...… 查看全部问答> |
|
求解:TI的MBUS芯片TSS721的TX、RX收发数据问题!! 最近用TI得TSS721焊了一个MBUS从站电路,本来已经正常工作了一段时间,但是昨天突然不行了。具体情况:用串口调试软件,发现TSS721的TX在RX悬空的情况下,发送数据正常;当RX、TX一起连接了串口,串口调试软件就看不见TX发送的数据了。 [ 本帖最后 ...… 查看全部问答> |
|
以前在回帖中回过。 $(\'flv_vy9\').innerHTML=(AC_FL_RunContent(\'width\', \'500\', \'height\', \'375\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'http://www.tudou.com/v/izHL-fNtKs8/&rpid=10654 ...… 查看全部问答> |
|
本帖最后由 astwyg 于 2014-7-12 23:23 编辑 应老大号召,试试写个呼吸灯,裸机的方法直接抛弃了,那是51和M3该干的事,rawOS还没怎么看,只能硬着头皮用linux,在shell中尝试了下面代码控制LED:echo 0 > brightnessecho 1 > brightness 可以控制亮灭 ...… 查看全部问答> |




