首页 > 其他分享 >STM32

STM32

时间:2024-01-15 21:36:25浏览次数:25  
标签:引脚 中断 STM32 上拉 寄存器 输入 时钟

STM32

1、keil的配置以及vscode的配置略
2、stm32的命名规则 todo 以下以stm32lf103ze为例。
3、点亮第一个小灯

​ 开启时钟、设置输入/输出模式、给小灯的位赋值0。

  • 开启时钟
    • 开启时钟使用到的寄存器为RCC_APB2ENR,32位,高16位为保留位。
    • 第二位IOPA控制IO端口A的输入输出使能。其他具体每一位什么功能看数据手册。
  • 设置输入/输出模式
    • 用到GPIOA_CRL / GPIOA_CRH。这两个寄存器每个都是32位,每个只能给8个输入/输出设置模式(每4bit给一个输入/输出位设置模式),两个加起来可以给16个输入/输出设置模式
    • 具体使用以及复位值见参考手册。
  • 给小灯的位赋值
    • 用到GPIOA_ODR(输出寄存器)。32位,高16位保留。

我们可以使用方便的方法,比如引入 stm32f10x.h 库来让以上的设置更见名知意。

4、寄存器和引脚 todo
5、GPIO的8种工作模式

​ GPIO输入输出电路里有一个P-MOS管和一个N-MOS管。 P-MOS管栅极接低电平导通,N-MOS管栅极接高电平导通。 P-MOS管的符号可以在前面加上一个小圆圈,有的也不加。加小圆圈的就是说这个是低电平导通,方便记一下。

  • 输入浮空
  • 输入上拉
  • 输入下拉
    • 以上的三个输入状态是管无输入时的输入值。比如选择输入上拉时,没有往芯片中输入数据,则为输入被上拉拉为1。
  • 模拟输入
    • 输入模拟信号,即没有走内部的施密特触发器,输入为模拟信号。
  • 开漏输出。
    • 利用上拉电阻实现。
    • 使用场景如 需要外部上拉电阻确定高电平、多个设备共用信号线...
  • 推挽式输出。
    • 使用场景如 todo
  • 推挽式复用功能。暂略。
  • 开漏复用功能。暂略。
6、时钟
  • HSI ---- 高速内部时钟;

    • RC振荡器产生。8MHz。
  • HSE ---- 高速外部时钟;

    • 在外部接的一个8MHz的晶振。
  • LSI ---- 低速内部时钟;

    • 大概40kHz。不能驱动系统时钟。
  • LSE ---- 低速外部时钟;

    • 32.768kHz。不能驱动系统时钟。
  • PLL ---- 锁环器/倍频器。

7、中断
  • NVIC (嵌套向量中断控制器) 作用为协调中断。

    • 来自内核的中断。如 系统滴答定时器。 直接由NVIC协调。
    • 来自内部外设的中断。 如 串口、定时器、IIC等。直接由NVIC协调。
    • 来自外部的中断。 如 PA-PG那112个引脚。 AFIO --> EXTI --> NVIC。
  • 中断的优先级

    • 中断的优先级占4个二进制位。
    • 分为 抢占优先级响应优先级。 两种优先级可以分这4个位。比如可以全部分给抢占。这个用3-7来配置。 从3开始,3表示4个位全给抢占;7表示4个位全给响应。
      • 先比抢占,再比响应,再查表。(两个没执行的中断的比较。)
      • 如果一个中断在执行,另一个中断只有抢占大于它时才能打断。
  • 中断的配置。

    • 开启时钟 (GPIO的复用引脚 和 AFIO)

    • 配置GPIO模式 比如我们想要设置下拉输入(我们想要上升沿生效,则需要设置下拉输入),然后记得把ODR也设置一下才能实现下拉,ODR设置0位。

    • 配置AFIO,用于将引脚复用为外部中断。比如 将外部中断10的位置指定上PF寄存器,也就是 将PF10引脚 指定为外部中断。

    • 配置EXTI。 (1、EXTI->RTSR配置上升沿触发; 2、EXTI->IMR开放对应的屏蔽寄存器。)

    • 配置NVIC。(1、优先级组; 2、优先级; 3、使能中断。)

    • 中断服务函数。写中断触发后要实现的功能。记得 EXTI->PR 设置挂起寄存器(0没有触发请求,1触发了请求(1即清位,需要我们手动清))。

      刚开始挂起寄存器EXTI->PR为0,有中断进来,对应的位变为1,进入中断后,我们再给它1让它再清零。

8、通讯
  • 串行:一次传输一个bit。 通讯距离远(USB线就算远了)、抗干扰能力强、成本低。

  • 并行:一次传输n个bit。 传输速率高。(一般设备内部间通讯用并行)

  • 单工:只能一方发送数据。如收音机。

  • 半双工:同一时间只能一方发送。如对讲机。

  • 全双工共:两端可以同时接收数据。如手机。

  • 同步:要求收发两端时钟保持一致。(共用同一个时钟,比如两个设备连接上SCL这一根时钟线。)

  • 异步:不要求时钟一致。

    stm32的串口通信有三个支持同步通信,由于异步没有时钟的要求,所以需要通讯设备之间约定好波特率,即每秒传输/接收多少个bit。先发低位,后发高位。USART串口同步异步接收器可以实现同步,UART就是同步)。一个设备的发送接另一个的接收,这要两个设备各两条线,再来个两设备共地的线。关于同步异步以及频率看后面记的时钟数和命名。 todo

    stm32的IIC通信是同步串行半双工通讯。先发高位,后发低位。todo

x

​ 1、stm32运算速度非常快,如果用循环当作延时,需要大概十万百万次空循环才能看到小灯闪烁的效果。

​ 2、stm32是32位地址线。

​ 3、寄存器的复位值即开机后或按下复位键之后寄存器或其对应引脚的初始默认值。查看数据手册时关注一下,因为这个有时能影响到写的逻辑。

​ 4、不同型号的IO口数量不同。我们使用这个有总共144个引脚,112个IO引脚(A-G * 16)

​ 5、关于ARM的应用及分类 略。

​ 6、当我们驱动大电流设备时,不能使用芯片直接驱动,因为如果我们输出0时,会造成电流进入芯片,电流大时会烧掉芯片。但我们可以把芯片加一个驱动器,比如三极管,芯片放在基极位置。

​ 7、上拉电阻拉高的原理是当我们电路为悬空状态(正负没有连通)时,没有电流经过上拉电阻,所以电阻两端的电压相同,电阻相当于导线。

​ 8、设置输入模式时,将CNFx设置为 上拉/下拉模式,还需要额外在输出寄存器ODR中配置来区分到底是上拉还是下拉(0下拉;1上拉 )。

​ 9、

  • 桥1通过APB2连接到外设,APB2上的频率为最高72MHz;上面的外设有:ADC1、ADC2、ADC3、USART1、SPI1、TIM1、TIM8、GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、EXTI、AFIO ;

  • 桥2通过APB1连接到外设,APB1上的频率最高36MHz;上面的外设有:DAC、PWR、BKP、bxCAN、USB、I2C2、I2C1、UART5、UART4、USART3、USART2、SPI3/I2S、SPI2/I2S、IWDG、WWDG、RTC、TIM7、TIM6、TIM5、TIM4、TIM3、TIM2

标签:引脚,中断,STM32,上拉,寄存器,输入,时钟
From: https://www.cnblogs.com/wangsiyaoa/p/17966386

相关文章

  • stm32笔记[11]-驱动SSD1306屏幕
    摘要在蓝桥杯物联网的CT127C开发板上驱动SSD1306的0.91寸显示屏.平台信息KeilMDK-ARM(μVision)V5.35.0.0STM32CubeMX6.2.1原理简介CT127C开发板简介蓝桥物联网竞赛实训装置省赛训练套装,适用于蓝桥杯大赛(电子类)物联网设计与开发科目竞赛训练及高校日常教学实训环......
  • STM32学习Day1
    一.所用型号二.STM32上所拥有的外设三.各个引脚的定义(查表)颜色引脚类型蓝色最小相关系统的引脚绿色I/O口和功能口的引脚红色电源相关的引脚类型:①S表示电源②I表示输入③O表示输出I/O口电平:I/O口能容忍的电压FT表示容忍5V,无FT则为3.3V主......
  • STM32CubeMX教程14 ADC - 多通道DMA转换
    1、准备材料开发板(正点原子stm32f407探索者开发板V2.4)ST-LINK/V2驱动STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)CH340GWindows系统驱动程序(CH341SER.EXE)XCOMV2.6串口助手3个滑动变阻器2、实验目标使用STM32CubeMX软件配置STM32F407开发板的ADC实现ADC多......
  • 01_STM32简介
    STM32简介简介ARMSTM32F103C8T6片上资源/外设命名规则系统结构引脚定义启动配置最小系统电路......
  • STM32+Codesys工业软件PLC解决方案
    工业控制系统在现代制造和自动化领域扮演着关键角色,基于IEC61131-3标准的控制器编程开发软件平台CODESYS,适用于多种行业的控制系统的开发,使用户方便快捷地对自动化工程进行编程和配置,完成项目开发、软件测试和应用调试。本次STM32联合合作伙伴CODESYS带您深入了解如何利用STM3......
  • STM32HAL库开发-了解HAL库(一)
    HAL库借鉴了面向对象的设计思想,将外设驱动封装为对象,屏蔽了底层硬件,提高了开发效率,但程序执行效率较低。HAL库的文件类型可认为分为以下两类库文件:stm32f4xx_hal_ppp.c/.h//主要的外设或者模块的驱动源文件,包含了该外设的通用APIstm32f4xx_hal_ppp_ex.c......
  • STM32CubeMX教程12 DMA 直接内存读取
    使用STM32CubeMX软件配置STM32F407开发板上串口USART1进行DMA传输数据,然后实现与实验“STM32CubeMX教程9USART/UART异步通信”相同的目标1、准备材料开发板(正点原子stm32f407探索者开发板V2.4)ST-LINK/V2驱动STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)CH340G......
  • 32Bit、基于ARM CPU的STM32F100C6T6BTR、STM32G030F6P6TR微控制器(MCU)
    1、STM32F1系列主流MCU:STM32F100C6T6BTR ICMCU32BIT32KBFLASH48LQFPSTM32F1系列主流MCU满足了工业、医疗和消费类市场的各种应用需求。该系列在集成一流的外设和低功耗、低电压运行等基础上实现了高性能,同时还以可接受的价格实现了高集成度,并具有简单的架构和简便易用的工具......
  • proteus8 单步调试stm32 外置arm gcc
    10年前proteus7的时代,51单片机就已经可以用keil和proteus联调了,单步调试,像连接了一个jtag调试口一样。proteus官方提供的keil调试器驱动有arm设备,不过我反复尝试,虽然识别到ProteusVSMSimulator设备和端口,但是还是报错,无法成功。本文只是借助proteus内置的编辑器和单步调试器,......
  • stm32 CubeMx 怎么实现SD卡/sd nand FATFS读写测试
    本实验仅用于记录和分享技术经验若涉及侵权请联系我删除。stm32CubeMx实现SD卡/sdnandFATFS读写测试。材料:stm32F407ZGT6开发板、雷龙公司的SD_NAND测试板(CSNP1GCR01-AOW)。(一开始是使用Nandflash的操作起来不太方便而且stm32cubemx自带的fatfs还没有磨损平衡算......