1、 基本的GPIO配置,注意,因为需要用到普通IO口作为中断输入口,因此是用了IO口德复用功能,因此必须打开RCC_APB2Periph_AFIO时钟,负责复用IO无效。
2、 IO口复用功能映射
3、 嵌套中断向量配置
调试发现这几句话是必须要的,不然不能产生中断!!!
NVIC_IRQChannel 这里的值需要注意一下,与固件库给出的值不符!!定义在stm32f103x.h头文件中。
4、 外部中断/事件配置
5、 在stm32f10x_it.c中添加中断处理函数,函数名称格式为(PPP代表中断名称)
函数名称在startup_stm32f10x_xx.s中寻找。
记得还需要在stm32f10x_it.h头文件中声明 该函数。
注意在中断函数处理完成以后清除中断标志位!!
例如:
关键字:STM32 中断调试
引用地址:
STM32学习笔记之中断调试
推荐阅读最新更新时间:2024-03-16 15:43
STM32学习总结之不同文件的作用
学习内容: startup_stm32f10x_hd.s 启动文件。 system_stm32f10x.c 这个文件的作用是里面实现了各种常用的系统时钟设置函数,有72M,56M,48M,36M,24M,8M,我们使用的是是把系统时钟设置成72M。 Stm32f10x.h 1、处理器外设寄存器的结构体定义。2、处理器外设的内存映射。3、处理器外设寄存器的位定义。一个寄存器有很多个位,每个位写1 或者写0 的功能都是不一样的,处理器外设寄存器的位定义就是把外设的每个寄存器的每一个位写1 的16 进制数定义成一个宏,宏名即用该位的名称表示。 无论是寄存器编程还是固件库编程,都必须包含这个头文件,有关外设寄存器的说明 都在这里面。
[单片机]
STM32开发 -- 启动流程
启动模式讲完了,我们知道是主闪存存储器启动的(主闪存存储器就是芯片内部的flash)。主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它。 接下来,再看一下它的启动流程是怎样的。 话说启动流程,我都讲过很多个了。 参看:S5PV210开发 – 启动流程 参看:DM368开发 – Bootloader 开发(转毕设) 一、回顾 首先你得知道主闪存存储器、系统存储器、内置SRAM代表什么?它们映射哪个区域。 我主要以STM32F105RC为例来讲一下。 参看:STM32F105RC 介绍 主闪存存储器:芯片内部的flash,即256K字节;从用户闪存启动,这是正
[单片机]
STM32的开漏电路与推挽输出
开漏结构 所谓开漏电路概念中提到的“漏”就是指MOS FET的漏极。同理,开集电路中的“集”就是指三极管的集电极。开漏电路就是指以MOS FET的漏极为输出的电路。一般的用法是会在漏极外部的电路添加上拉电阻。完整的开漏电路应该由开漏器件和开漏上拉电阻组成。如图1所示: 图1 组成开漏形式的电路有以下几个特点: 1. 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。如图1。 2. 可以将多个开漏输出的Pin,连接到一条线上。形成“与逻辑”关系。如图1,当PIN_A、PIN_B、PIN_C任
[单片机]
stm32---DMA基础
DMA,意思为直接存储器访问。 DMA 可 用于实现外设与存储器之间或者存储器与存储器之间数据高效传输。 因为 DMA 传输数据移动过程无需 CPU 直接操作,这样节省的 CPU 资 源就可供其它操作使用。 从硬件层面来理解,DMA 就好像是 RAM 与 I/O 设备间数 据传输的通路,外设与存储器之间或者存储器与存储器之间可以直接在这条通路 上进行数据传输。 这里说的外设一般指外设的数据寄存器,比如 ADC、SPI、I2C、 DCMI 等外设的数据寄存器,存储器一般是指片内 SRAM、外部存储器、片内 Flash 等。 STM32F1 最多有 2 个 DMA 控制器,DMA1 有 7 个通道。 DMA2 有
[单片机]
STM32 HAL的超全知识总结
ST 为开发者提供了非常方便的开发库:有标准外设库(SPL库)、HAL 库(Hardware Abstraction Layer,硬件抽象层库)、LL 库(Low-Layer,底层库)三种。前者是ST的老库已经停更了,后两者是ST现在主推的开发库。 相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,ST新出的芯片已经没有STD库了,比如F7系列。目前,HAL库已经支持STM32全线产品。 通过文字描述可以知道HAL库的几
[单片机]
将STM32的标准库编译成lib使用
以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程。 这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间。每次建立工程都这么编译,是一个相当浪费时间和香烟的过程。 于是,我有了将库编译成lib文件的想法。本博文就是我将STM32F4的标准库编译成lib文件并在工程中使用的过程。 适用对象: 1、熟悉库,不想再看库里边代码 2、有稳定的库,库文件更新不频繁 3、库文件多,每次编译时间长 下面是我将STM32F4的标准库编译成lib并在工程中使用的过程: 使用工具链:MDK4.70A。其实各个工具链几乎是一样的 1、建立创建lib的工程 2、将库文件拷贝到工程目录: 将库里边目
[单片机]
STM32学习笔记——使用SysTick定时器做延时
开学了,无法再像假期一样能够一整天玩板了!好在这学期的课说少不少,说多也不多,每周也有十几大节。剩下的时间除去学生工作等一些七七八八的事情,间断着还是能看看教程玩玩板!越发发现《STM32菜鸟学习手册 啰嗦版》真是不错的入门教程,简单易懂。其他诸如《固件库手册》等等官方文件更是必不可少,可惜ST公司的网页找手册实在麻烦得很呐! 这两天一直在看有关于系统嘀嗒时钟SysTick的文件,但由于3.5版的固件库较2.0版的库,已经将SysTick相关的驱动函数移除,用户要使用SysTick就必须改为调用CMSIS中的函数,而网上大多数的例程(包括《菜鸟学习手册》)使用的都是2.0的库,以至于在学习中遇到许多问题,程序编译总会出现
[单片机]
STM32实时时钟RTC
RTC(实时时钟)和后备寄存器 RTC和后备寄存器通过一个开关供电,在VDD有效时该开关选择VDD供电,否则由VBAT管脚供电。 后备寄存器(10个16位的寄存器)可以用于在VDD消失时保存数据。 实时时钟具有一组连续运行的计数器,可以通过适当的软件提供日历时钟功能,还具有闹钟中断和 阶段性中断功能。RTC的驱动时钟可以是一个使用外部晶体的32.768kHz的振荡器、内部低功耗RC 振荡器或高速的外部时钟经128分频。内部低功耗RC振荡器的典型频率为40kHz。为补偿天然 晶体的偏差,RTC的校准是通过输出一个512Hz的信号进行。RTC具有一个32位的可编程计数器, 使用比较寄存器可以产生闹钟信号。有一个20
[单片机]