使用外部中断的一般步骤
1、初始化I/O 口,
2、开启AFIO时钟
3、建立I/O口与中断线的映射关系,使用库函数
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource),
参数GPIO_PortSource表示I/O口,取值:GPIO_PortSourceGPIOx (A..G).。
参数GPIO_PinSource表示中断线,取值:GPIO_PinSourcex(0..15).。
4、初始化中断线,即配置结构EXTI_InitStructure,其成员
EXTI_Line:中断线,取值EXTI_Line0x(0~15)
EXTI_Mode:中断模式,取值EXTI_Mode_Interrupt(中断);EXTI_Mode_Event(事件)
EXTI_Trigger:触发方式,取值EXTI_Trigger_Rising(上升沿);EXTI_Trigger_Falling(下降沿);EXTI_Trigger_Rising_Falling(任意电平);
EXTI_LineCmd:使能中断线,取值ENABLE ;DISABLE
5、配置中断优先级,使用库函数NVIC_Init(&NVIC_InitStructure);结构NVIC_InitStructure成员配置。
NVIC_IRQChannel:中断通道号,定义见stm32f10x.h中IRQn_Type结构。对大容量产品见STM32 specific Interrupt Numbers部分定义和 #ifdef STM32F10X_MD 与 #endif 之间的部分定义。
NVIC_IRQChannelPreemptionPriority:抢占优先级,取值:参考NVIC_Priority_Table。
NVIC_IRQChannelSubPriority:响应优先级,取值:参考NVIC_Priority_Table。
NVIC_IRQChannelCmd:中断通道使能,取值:ENABLE;DISABLE
6、编写中断程序,中断源与中断服务程序(中断程序入口)对应,见startup_stm32f10x_hd.s 。中断线定义的中断程序名为,EXTI0_IRQHandler、EXTI1_IRQHandler、EXTI2_IRQHandler、EXTI3_IRQHandler、EXTI4_IRQHandler、EXTI9_5_IRQHandler、EXTI15_10_IRQHandler,
7、中断程序格式:
void EXTI2_IRQHandler(void)
{
//判断中断线状态
if(EXTI_GetFlagStatus(EXTI_Line2)!=RESET)
{中断程序}
//消除中断标志
EXTI_ClearITPendingBit(EXTI_Line2);
}
关键字:stm32 中断配置
引用地址:
stm32:中断配置的步骤
推荐阅读最新更新时间:2024-03-16 15:15
在STM32中如何配置片内外设使用的IO端口
首先,一个外设经过配置输入的时钟和初始化后即被激活(开启)。 如果需要使用该外设的输入输出管脚,则需要配置相应的GPIO端口;否则该外设对应的输入输出管脚可以做普通GPIO管脚使用。 STM32的输入输出管脚有下面8种可能的配置: 1. 浮空输入 2. 带上拉输入 3. 带下拉输入 4. 模拟输入 5. 开漏输出 6. 推挽输出 7. 复用功能的推挽输出 8. 复用功能的开漏输出 对应到外设的输入输出功能有下述三种情况: 一、外设对应的管脚为输出:需要根据外围电路的配置选择对应的管脚为复用功能的推挽输出或复用功能的开漏输出。 二、外设对应的管脚为输入:则根据外围电路的配置可以选择浮空输入、带上拉输入或带下拉
[单片机]
STM32的can2和CAN1竟然有关联?!!!
调试STM32F107的CAN2竟然无法接收。通过与另一个代码对比,终于发现想用CAN2,则必须把CAN1的RCC也配置上,就可以接收了。 上网查了下,21IC给解释http://bbs.21ic.com/icview-542674-1-1.html。手册也懒得看了,总之,CAN2和CAN1是有关联的。对于STM32F407可能也是如此。 如果设置两遍也不行。也是CAN2不能接收。 比如这样设置两遍: RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);
[单片机]
采用STM32 单片机的太阳能LED街灯解决方案
随着化石类能源的日益减少,以及温室气体的过度排放导致全球变暖问题越来越受到重视,人们一方面在积极开发各类可再生新能源,另一方面也在倡导节能减排的绿色环保技术。太阳能作为取之不尽、用之不竭的清洁能源,成为众多可再生能源的重要代表;而在照明领域,寿命长、节能、安全、绿色环保、色彩丰富、微型化的LED固态照明也已被公认为世界一种节能环保的重要途径。太阳能-LED街灯同时整合了这两者的优势,利用清洁能源以及高效率的LED实现绿色照明。 本文介绍的太阳能-LED街灯方案,能自动检测环境光以控制路灯的工作状态,最大功率点追踪(MPPT)保证最大太阳能电池板效率,恒电流控制LED,并带有蓄电池状态输出以及用户
[电源管理]
stm32USART使用(库函数)
1,定义GPIO端口、串口USART、中断NVIC初始化结构体。 2,打开相关外设时钟,串口1的时钟和引脚都在APB2总线上所以可以直接|操作,如下 3,给GPIO结构体成员赋值,设置引脚功能,此处用的是USART1,Tx是PA9,Rx是PA10,我们要设置PA9为复用推挽输出,PA10为浮空输入。 4,初始化GPIO端口之后我们就要配置中断分组和串口中断优先级,中断优先级分组只用设置一次。 5,以上配置好之后我们就可以来配置USART了。 6,最后我们不能忘记了编写串口接收中断函数 将函数名字声明到头文件里以上我们的串口初始化程序就编写完毕了!
[单片机]
STM32——待机唤醒实验
1.STM32待机模式介绍 1.1 STM32低功耗模式介绍 很多单片机具有低功耗模式,比如MSP430、STM8L等,我们的STM32 也不例外。默认情况下,系统复位或上电复位后,微控制器进入运行模 式。在运行模式下,HCLK 为CPU提供时钟,并执行程序代码。当 CPU 不 需继续运行(例如等待外部事件)时,可以利用多种低功耗模式来节省 功耗。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等 条件,选定一个最佳的低功耗模式。 当然在运行模式下,也可以通过如下方式降低功耗: (1)降低系统时钟速度 (2)不使用 APBx 和 AHB 外设时,将对应的外设时钟关闭 STM32 提供了 3 种低功耗模式,以达到不
[单片机]
QuarkLink如何在STM32和STSAFE上进行安全的云管理
开发人员如何安全地将数千台STM32物联网设备配置并载入云服务?答案可能是QuarkLink™,这是意法半导体合作伙伴计划成员Crypto Quantique的解决方案,可促进密钥管理,自动化入职程序,并提供远程管理设备的仪表板。该解决方案可与STM32微控制器或STSAFE-A110安全元件配合使用。该公司还提供在B-L4S5I-IOT01A Discovery工具包上运行并连接到AWS的试用版。因此,开发人员可以快速测试 QuarkLink 的 API 和服务。该解决方案还支持Microsoft Azure,Eclipse Mosquitto,甚至可以适应独特的云计算平台。 uarkLink,物联网的安全性远不止密码学 为
[单片机]
stm32实用篇4: stm32数据类型长度
由于经常会忘记stm32的数据类型长度,测试一下: DEBUG_INFO( stm32数据类型长度 ); DEBUG_INFO( char = %d byte. , sizeof(char)); DEBUG_INFO( short = %d byte. , sizeof(short)); DEBUG_INFO( int = %d byte. , sizeof(int)); DEBUG_INFO( long = %d byte. , sizeof(long)); DEBUG_INFO( long long = %d byte. , sizeof(long long)); DEBUG_INF
[单片机]
STM32关于printf重定向到串口
简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式), 标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { U
[单片机]