关于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 参考函数初始化ADC1void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct) 参数 数据类型 作用 选项 ADC_TypeDef* ADCx — 选择ADC ADC1-ADC3 ADC_InitTypeDef* ADC_InitStruct — 结构体 — 返回值
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
arduino的spi串行外围设备接口(SPI)是微控制器使用的同步串行数据协议,用于在短距离内快速与一个或多个外围设备进行通信。它也可以用于两个开发板之间相互的通信。 使用SPI连接,总是有一个主设备(通常是微控制器)来控制外围设备。通常,所有设备共用以下三条线: MISO(Master In Slave Out)-从机线路,用于向主机发送数据,MOSI(Master Out Slave In)-主机线路,用于向外围设备发送数据,SCK(串行时钟)-同步主机产生的数据传输的时钟脉冲 每个从设备专用的一条线: SS(从设备选择)-主设备可用此引脚来决定启用或禁用指定设备。当从设备的CS引脚为低电平时,它与主机通信。同理CS引脚电平为高时,它将忽略连接到CS引脚的设备, 不与之进行数据交互。文件宏定义: 123//这个为SPI头文件#include <SPI.h>//
arduino的DHT11芯片手册: 芯系列DHT11温湿度传感器 芯片库下载:https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/Adafruit_Sensor(以上两个文件都要下载) 头文件加宏定义: 1234//这个为DHT11头文件#include <DHT.h>#include <DHT_U.h>// 创建DHT对象 1234#define DHTPIN 4 // 设置获取数据的引脚#define DHTTYPE DHT11 // 选择DHT11DHT dht(DHTPIN, DHTTYPE); // 创建一个DHT对象