配置GPIO工程配置这里不赘述了 STM32HAL库配置 我们用右边图像化配置GPIO 灰色的就是没有配置的GPIO假设我们要配置PC13GPIO_Input:是配置输入GPIO_Output:是配置输出 配置GPIO输出我们点击GPIO_Output 然后选择你要的GPIO会发现红色框那边有几个参数可以进行配置 配置大类 可选选项 GPIO output level(初始输出电平) LowHigh GPIO mode(GPIO 输出模式,核心选型) Output Push Pull(推挽输出)Output Open Drain(开漏输出) GPIO Pull-u
关于HAL库STM32的标准库其实已经停更仅支持早期系列(F0/F1/F2/F3/F4/L1)但是因为标准库的影响够远,很多国产的芯片也接近标准库的风格去开发 对于新时代来说要开发stm32更加建议的是HAL库和LL库 HAL更加注重效率,开发更简单 而LL库更加接近底层寄存器开发,所以难度会大一点 我们这里介绍的是HAL开发 cubemxSTM32cubemx是STM32发布新的嵌入式开发工具他主要是可以用图形化直接快速配置快速生成代码工厂文件,不用像以前一样要慢慢的手动导入各种库 关于STM32cubemx下载: 官网下载 安装不能有中文路
关于UART UART是一种全双工,异步,点对点的通讯协议他主要靠设备之间互相约定传输频率没有固定的时钟信号来确认同步而且设备之间没有明确的主从之分连接最少只要3个线TX — RXRX — TXGND — GND 设备自己解决供电问题就可以通讯了 参考代码 串口外设 TX 引脚 RX 引脚 RTS 引脚 CTS 引脚 备注 USART1 PA9 PA10 PA12 PA11 最常用,挂载 APB2 高速总线,支持硬件流控 USART2 PA2 PA3 PA1 PA0 挂载 APB1 低速总线,支持硬件流控 USART3 PB10 PB11 PB14 PB13 挂载 A
ADCADC其实就是单片机采集电压 这是STM32内部的ADC VREF+ 内部默认接 VDDAVDDA 一般接 3.3V所以默认最大采集电压 = 3.3V 然后STM32F103他的ADC是12位也就说最大是0-4095 参考函数GPIO设置模拟输入12345GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_-X;GPIO_InitStructure.GPIO_Speed = GPIO_Spe
PWM是什么 这就是PWM 所以说pwm也就是波不断上上下下那么要实现准确的间隔那么还是离不开定时器 对的,这里的捕获和比较基本就是给PWM准备的 我们只需要CNT和CCR比较比如CNT运行到设置的CCR值就翻转但是CNT记满会自动复位也就是一次轮回这个记满是由(ARR+1)决定的 但是CNT是由CK_PSC(输入时钟)和PSC(预分频器)决定的 为什么用CK_PSC而不是CK_INK因为他还可以由外部时钟,或者内部其他时钟决定 也就是CNT=CK_PSC=CK_PSC/(PSC+1)CNT是频率转换成时间单位就是1/[(CK_PSC/PS
我们还是继续研究通用定时器我们主要是研究定时器的从模式什么是从,就是定时器接受到其他信号来做出反应 这个信号可以是外部给的也可以是内部给的 定时器触发外部触发 我们上一篇看过了STM定时器可以通过TIx捕获TIX捕获会经过TIxFPx通道然后我们根据图片,刚刚好TI1FP1和TI2FP2可以到从模式控制器 内部触发 我们看图片,发现他还有ITRx和TI1F_ED ITRx是内部定时器发出的信号他是内部定时器CNT溢出复位后才会产生一次TRGO信号 TI1F_ED是内部定时器的通道接收到了边沿信号就会产生一次信号 参考代码函数选择触发源1void TIM_SelectInputTrigger(
上期我们讲了STM32标准库基本定时器 这个图看起来很复杂其实也就这样(你知道我想说什么) 上期我们说过通用定时器里面包含了基本定时器所以我们上一期其实是只用了这个部分 然后本篇我们先讲的通用定时器计数因为定时器说白了就是记录时钟的信号。如果改成外部的话那么就可以记录外部的波的数据 我们先说第一个方法使用ETR 方法1:ETR ETR主要用这通用定时器的这些部分 但是STM32的ETR引脚不多虽然理论上每个通用定时器和高级定时器的CH1都是ETR但是可能因为封装不同所以没这里用STM32C8T6举例 点击展开完整图片 他也就PA12(TIM1) PA0(TIM2)有ETR所以资源还
关于定时器STM32体内存在有3种定时器 类型 编号 总线 功能 高级定时器 TIM1、TIM8 APB2 拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能 通用定时器 TIM2、TIM3、TIM4、TIM5 APB1 拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能 基本定时器 TIM6、TIM7 APB1 拥有定时中断、主模式触发DAC的功能 高级包含通用,通用包含基本关于定时器 有点晃眼睛你真要看吗? 高级定时器 通用定时器 基本定时器 我们先不看其他的,我们就先只研究基
本教程使用的单片机为stm32f103c8t6 简单介绍stm32系列单片机有68个可屏蔽中断通道,包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设这种中断源统一由NVIC统一来进行管理。为什么要NVIC进行管理,因为NVIC可以有中断优先级。 NVIC介绍NVIC里面分为抢占优先级和响应优先级 分组方式 抢占优先级 响应优先级 分组0 0位,取值为0 4位,取值为0~15 分组1 1位,取值为0~1 3位,取值为0~7 分组2 2位,取值为0~3 2位,取值为0~3 分组3 3位,取值为0~7 1位,取值为0~1 分组4 4位,取值为0
arduino的IIC首先arduino的IIC是硬件IIC,硬件IIC一般都是固定引脚的所以需要自己先去查一下自己芯片的第一组IIC接口是哪两个引脚(esp32例外)然后,需要芯片支持Wire.h库。一般芯片都会自带有的。(这是官方库)最后说明:读写缓存只有 32 字节文件宏定义: 123//这个为IIC头文件#include <Wire.h>// esp32iic可以是任意的IO