关于STM32配置中断和GPIO针脚问题

发布者:WanderlustGlow最新更新时间:2023-08-21 来源: elecfans关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

 STM32是用的什么开发环境?

  STM32系列单片机,这款单片机功能强大,而且很容易学习,官方示例代码很多,稍加修改就可以开发自己的东西了。
  嵌入式软体搭配最新版的STM32CubeMX个人电 脑开发 工具使用, 设计人员 可在绘图介面向导内配置微控制器,只要按一下,即可生成初始化C代码,直接用於多款市面上流行的 第三方开发 工具。
  STM32Nucleo 开发板可让开发人员连接微控制器的全部I/O介面,并整合了ST-Link侦错器(debugger)/程式设计(programmer),无需单独安装侦错器。最後, STM32Nucleo 开发板拥有mbedTM功能,这表示该开发板可与个人电脑直接连结,并直接在mbed.org线上开发环境执行开发板。



  如果之前学51入门的话。 STM32F103 系列用keil4 for arm是最方便的,如果是 STM32F4 系列就要用Keil5 for arm了。

 一。配置中断

  void NVIC_Configuration(void)

  {

  NVIC_InitTypeDef NVIC_InitStructure;

  /* Set the Vector Table base location at 0x08004000

  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000); // 1.分配中断向量表

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级

  /* Enable the EXTI1 Interrupt

  NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQChannel; // 中断通道

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别1

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //次优先级为0

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //通道中断使能

  NVIC_Init(&NVIC_InitStructure); //初始化中断

  }

  注意:

  如果外部中断针脚是PA1,PB1,PC1,PD1 那么中断就要用EXTI1。

  如果我们配置的外部针脚为PA4,或PB4,或PC4,PD4等,那么采用的外部中断也必须是EXTI4;

  二。配置GPIO针脚

  void GPIO_Configuration(void)

  {

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //选择IO针脚

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //配置中断脚,配置为浮空输入

  GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化针脚

  }

  注意:如果的针脚是端口的1号针脚,配置的中断一定是EXTI1.

  三。配置EXIT线,使中断线和IO管脚连接在一起

  void EXIT1_Configuration(void)

  {

  EXTI_InitTypeDef EXTI_InitStructure;

  //Connect EXTI Line1 to PB.01

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1); //将EXTI线1连接到端口GPIOD的第1个针脚上

  // Configure Key Button EXTI Line to generate an interrupt on both rising and falling edge

  EXTI_InitStructure.EXTI_Line = EXTI_Line1; //注意:如果配置的1号针脚,那么必须是EXTI_Line1

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; //下降沿和上升沿都触发

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;

  EXTI_Init(&EXTI_InitStructure); //初始化中断

  }

  到此中断配置完成,可以写中断处理函数。

  void EXTI1_IRQHandler(void)

  {

  if(EXTI_GetITStatus(EXTI_Line1) != RESET)

  {

  // Clear the EXTI line 9 pending bit

  EXTI_ClearITPendingBit(EXTI_Line1);

  _485_Baud_Check() ; //调用处理函数

  }

  }


关键字:STM32 引用地址:关于STM32配置中断和GPIO针脚问题

上一篇:STM32的Flash写了保护怎么办
下一篇:移植RT-Thread到STM32开发板的详细步骤例程

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

FreeRTOS 在STM32上的移植 V1.0
FreeRTOS作为开源的轻量级实时性操作系统,不仅实现了基本的实时调度、信号量、队列和存储管理,而且在商业应用上不需要授权费。 FreeRTOS的实现主要由list.c、queue.c、croutine.c和tasks.c 4个文件组成。list.c 是一个链表的实现,主要供给内核调度器使用;queue.c 是一个队列的实现,支持中断环境和信号量控制;croutine.c 和task.c是两种任务的组织实现。对于croutine,各任务共享同一个堆栈,使RAM的需求进一步缩小,但也正因如此,他的使用受到相对严格的限制。而task则是传统的实现,各任务使用各自的堆栈,支持完全的抢占式调度。 FreeRTOS的主
[单片机]
FreeRTOS 在<font color='red'>STM32</font>上的移植 V1.0
STM32串口发送中断
SECTION 2 先说TC。即Transmission Complete。发送一个字节后才进入中断,这里称为 发送后中断 。和原来8051的TI方式一样,都是发送后才进中断,需要在发送函数中先发送一个字节触发中断。发送函数如下 /* 功能:中断方式发送字符串.采用判断TC的方式.即 判断 发送后中断 位. 输入:字符串的首地址 输出:无 */ void USART_SendDataString( u8 *pData ) { pDataByte = pData; USART_ClearFlag(USART1, USART_FLAG_TC);//清除传输完成标志位,否则可能会丢失第1个字节的数据.网友提供.
[单片机]
<font color='red'>STM32</font>串口发送<font color='red'>中断</font>
基于STM32设计的太阳能热水器
一、概述 本项目使用 STM32F103C8T6 微控制器作为核心处理器,结合多个传感器和执行器,实现了太阳能热水器的自动控制。通过对光照、温度、水位等各种参数的监测和分析,对水泵、电磁阀等设备进行自动控制,从而实现太阳能热水器的高效、安全、可靠运行。 二、硬件设计 (1)模块组成 太阳能热水器模块主要由以下几个部分组成: 光敏传感器模块:用于检测阳光强度,反映太阳辐射强度和方向。 温度传感器模块:用于检测太阳能集热器表面和水箱内的温度,并根据温度变化调整水泵、电磁阀等设备的运行状态。 液位传感器模块:用于检测水箱内的液位,并根据液位高低控制水泵和电磁阀的启停。 水泵模块:通过控制水泵的启停,实现水循环流动和充水功能。 电
[单片机]
基于<font color='red'>STM32</font>设计的太阳能热水器
011_STM32程序移植之_内部flash开机次数管理
1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH340引脚 VCC--------------------VCC GND-------------------GND PA9--------------------RXD PA10-------------------TXD 1. 功能: 1. 使用STM32内部falsh进行开机次数记录 2. 通过串口输入密码进行权限的设置 3. 设置唯一硬件标识 2. 移植基础 1. 008_STM32之_keil编译内存大小解析 2. 009_STM32程序移植之_内部fa
[单片机]
011_STM32程序移植之_内部flash开机次数管理
一文知道STM32 GUI的应用
整体上讲,很多STM32芯片内置了功能强大的用于加速图形处理的硬件加速器,借助它们一方面可以大大减轻CPU负荷,以节省CPU处理带宽去应对其它任务,另一方面,在节省内存同时还能保障动画或视频播放更为流畅。这些硬件图形加速器分别是STM32 Chrom-ART 加速器,或称DMA2D,是个专门用于二维图形操作处理的DMA;硬件JPEG 编解码器,用于对JPEG图像的编解码;STM32 Chrom-GRC,它是个内存管理单元,用于优化非方形图形显示的存储开销。 到目前为止,由于支持图形显示的STM32系列或料号很多,有时想基于STM32 的GUI应用做选型,可能要费一番功夫。这里有个表格,汇总了目前直接支持各类显示接口的STM32
[单片机]
一文知道<font color='red'>STM32</font> GUI的应用
STM32单片机的原理、特性和应用
STM32单片机 由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名…其强大的功能主要表现在: 特性: 1.内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周
[单片机]
STM32菜鸟成长记录---普通定时器应用
一、STM32通用定时器原理 STM32 系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。 下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图: 从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。 下面以通用定时器2的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预
[单片机]
<font color='red'>STM32</font>菜鸟成长记录---普通定时器应用
stm32之RTC
1、stm32f10x_it.c文件 /******************************************************************************* * Function Name : RTC_IRQHandler RTC中断 * Description : * Input : None * Output : None * Return : None *******************************************************************************/ extern volatile bool S
[单片机]
<font color='red'>stm32</font>之RTC
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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