首页 > 其他分享 >32单片机

32单片机

时间:2024-08-06 10:16:53浏览次数:16  
标签:SCL 32 单片机 SDA 寄存器 I2C 数据 外设

1 STM32&ARM介绍

  1. MDK下载
  2. 支持包安装
  3. 破解
  4. stlink驱动安装

2 程序安装

  1. start
  2. library
  3. main
  4. 设置中调用库函数文件
  5. 调试选择stlink 编译run and restart

3 GPIO

GPIO寄存器 端口配置低寄存器+端口配置高寄存器
端口输入寄存器 保留+低16
端口输出寄存器 保留+低16
端口位设置/位清除寄存器 高清除,低设置 ,(1执行,0无影响)
端口清除寄存器 保留+低16(位清除)
端口配置锁定清除器

4 面包板

  1. 有4排横着的金属爪,用来引用电源正负极
  2. 剩下的是竖着的金属爪,通过元件和导线联通闭合回路
  3. 代码编译后需要下载才能点亮LED
  4. A15,B3,B4这三个口暂时不要配置是调试端口

5 调试方式

  1. 串口调试
  2. 显示屏
  3. keil
  4. 点灯调试
  5. 注释调试

6 TIM定时中断

  1. 中断函数尽量简单
  2. 不要在中断函数和主函数调用相同的变量和硬件
  3. PSC是预分频器,调整高低电平的周期
  4. ARR是计数器,计数器溢出时进入中断

7 TIM输出比较&输入捕获

7.1输出比较

7.2死区生成和互补输出

在推挽电路中不允许两个MOS管同时导通,会短路,于是使用一个互补输出,当上面MOS管导通,下面MOS管断开,因为是切换开关变化是瞬间发生的,可能存在电路延缓,使得MOS管同时导通,死区生成电路能够延缓,比如说下管关闭延时一段时间,再导通上管...

7.3PWM电极驱动芯片

7.4输入捕获

TIM编码器接口

8 ADC

单次转换
连续转化
单次转换扫描模式
连续转化扫描模式

9 DMA

CPU对DMA进行相应的配置->硬件外设触发/软件触发->DMA读取寄存器数据并写入到另一个寄存器
注意:Flash是只读ROM,无法作为寄存器接收对应的数据

开关打开,触发,传输计数器不为0时,DMA会进行数据的转运,从一个寄存器转到另一个寄存器,直到传输计数器为0。其中自动重装器是为了循环使用,硬件触发一般适用于外设,软件触发适用于内部寄存器的转运。
写传输计数器时,必须关闭开关控制器。
数据宽度,外设到存储器,超了高位补0,少了高位丢失。

10 USART

串口数据包

HEX数据包

文本数据包

Boot_Loader

当需要使用串口下载程序时,需要将Boot切换到0,这样然后将程序下载进去,Boot再切换到1,复位后就能编译程序了。

11 I2C

I2C特点介绍

实现单片机连接外部寄存器,进行读写功能
自带上拉电阻,进行I2C通信时,无需再进行配置
数据高位先行
对于相同设备作为从机,可以通过修改他的地址来区别
● 半双工通信(一根数据传输线)
● 应答机制
● 可接多个外设,互不干扰
● 同步时序

时序

(1)起始终止

(2)发送一个字节 :(主机单片机->从机外设芯片)
SCL 置低电平,此刻SDA可以改变电平表示0和1;
SCL高电平读取SDA的数据,从机在SCL上升沿读取SDA数据
SCL下降,置低电平,主机在SCL下降沿时候,将数据放在SDA上传输下一位数据

(3)接收一个字节 :(主机单片机-从机外设芯片)
SCL 置低电平,此刻SDA可以改变电平表示0和1;
SCL高电平读取SDA的数据,从机在SCL上升沿读取SDA数据
SCL下降,置低电平,主机在SCL下降沿时候,将数据放在SDA上传输下一位数据
(4)应答

(5)数据帧
指定地址写

当前地址读

指定地址读

以上都是一个字节的读与写,若想发送多个字节,则需要在发送数据、接收数据处*n,而寄存器地址也跟随移动

MPU6050

6轴姿态传感器,检测欧拉角,3轴加速度计,具有静态稳定性;3轴陀螺仪传感器,具有动态稳定性。

  1. 自测,使能自测读取数据,失能自测读取数据,两个数据在芯片所规定的范围内则认为芯片正常

  2. 电荷泵升压,电源和电容并联,给电容充电,完成后串联得到一个倍数关系的电压。来回切换,加一个滤波就能获得升压效果,给陀螺仪提供高压。

  3. 采样时钟分频器f=f陀螺仪时钟/(分频+1)

  4. 配置寄存器,减小输出数据抖动,配置低通滤波器,陀螺仪时钟由8K-1KHz

  5. 陀螺仪寄存器

  6. 加速度寄存器

  7. 数据寄存器(陀螺仪,加速度,温度...)
    高八位左移八位|低八位,存入int16_t里边,得到的就是测量的数据。

  8. 电源管理寄存器1

  9. 电源管理寄存器2

  10. ID号(最后一位不随AD0变化,默认0x68)

所有寄存器上电默认0x00(一个为0x68,一个为0x40),即需要解除睡眠模式

I2C外设

硬件I2C的波形更加规整,软件模拟I2C更加灵活,不受硬件电路影响。

12 SPI

SPI介绍

(1)起始和终止

(2)数据交换

指定地址写

指定地址读

W25Q64(Flash闪存)

存储空间->块->扇区->页,每页256byte

状态寄存器1
Busy:1进入忙状态,不响应
Wel:1写使能,可以进行写操作,之后会自动置0
指令集

SPI硬件外设

13 Unix时间戳

以1970年1月1日00:00:00开始计时得到的一个秒数
GMT:以伦敦的格林尼治为标准,将地球绕太阳转一圈的时间分为24小时,其他时区需要进行相应的偏移
UTC:铯原子的多少周期为1秒标准,进行计数,因为地球越转越慢,会出现误差,每出现0.9秒误差设置一闰秒

14 BKP&RTC

15 PWR电源控制

主频越低,耗电越少,大概成正比关系

No Target Connected 错误需要按住Reset再点击下载松开Rest

16 WDG看门狗

看门狗启用后,不能关闭
窗口看门狗启用时,T6必须给1

17 Flash闪存

● 使用内部闪存读写数据时,CPU会暂停,中断会暂停
● 指定地址没有擦除,无法执行编程并警告,除非写入数据为0x0000
● 指定地址为写保护,无法执行编程并警告
● 当闪存保护由保护变为未保护,会自动执行擦除
● WRPx写保护的位1有效,0无效
● FPEC键寄存器(大锁) OPTKEY(小锁) 写入Key1,再写入Key2解锁

标签:SCL,32,单片机,SDA,寄存器,I2C,数据,外设
From: https://www.cnblogs.com/Aaryn/p/18344632

相关文章

  • leetcode数论(326. 3 的幂)
    前言经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。数论包含最大公约数(>=2个数)、最大公约数性质、最小公倍数、区间范围质因素计数(最下间隔)、质因素分解、判断质数、平方根、立方根、互质、同余等等。描述给定一个整数,写一个......
  • STM32F1移植FREERTOS DEMO
    简介STM32F1太常用了,因为官网已经把移植的工作做的很完善了,只要文件放到相应工程里就可以使用,这里只做一个简单的DEMO,记录下FreeRTOS正常启动的流程CUBEMX配置1.新建CUBEMX工程,使用SWD的情况先配置SWD设置,防止第一次烧录后,后续无法使用2.由于FreeRTOS有重新使用到SYSTICK(滴搭......
  • STM32学习记录(二):GPIO
    何为高低电平?高电平电压(highlevelvoltage),输出的电压值相对较高低电平电压(lowlevelvoltage),输出的电压值相对较低高低电平的电压具体值是多少需要参考数据手册,举个例子,如下表所示,VDD的典型值是3.3V,根据数据手册可以知道低电平下GPIO输出的最大电压是0.4V;高电平下GPIO输......
  • 【STM32】TIM定时器
    个人主页TIM定时器一、简介二、基本定时器三、通用定时器1、时钟源选择2、时基单元3、输出比较和输入捕获电路(1)输出比较①PWM波形②通用定时器的输出比较电路③输出模式控制器的逻辑④输出比较基本结构(2)输入捕获①测频率的方法②输入捕获电路③主从触发模式④输入捕......
  • 记一次STM32使用I2C PinRemap引脚重映射出现卡死现象
    在移植WouoUI到STMF103C8BluePillboard时,发现会出现上电卡死在I2C检查函数(如下图)本人遇到的现象:在习惯使用的(SWI2C/HWI2C)@(PB8->SCLPB9->SDA)连接OLED的情况下,大多数情况使用江科大的SWI2C,一切正常。今天跑某开源基于u8g2库的UI框架WouoUI(HWI2C)@(PB6->SCLPB7->SDA)遇......
  • day32【LeetCode力扣】541. 反转字符串 II
    day32【LeetCode力扣】541.反转字符串II1.题目描述给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。如果剩余字符少于k个,则将剩余字符全部反转。如果剩余字符小于2k但大于或等于k个,则反转前k个字符,其余字符......
  • stm32入门-----硬件I2C读写MPU6050
     目录前言 一、stm32中I2C库函数介绍(stm32f10x_i2c.h)1.初始化2.使能操作3.生成起始位和结束位标志4.发送I2C从机地址5.发送数据和接收数据6.发送应答位7.状态检测二、硬件I2C读取MPU60501.电路连线图2.主要工程文件 3.MPU6050.c代码剖析(1)检测步骤超时操作(2)指......
  • 习题2.32
    这个题目粗看起来好像是很简单,但是我在实现的时候,真的是废了好大的力气,主要原因有三点,第一,对clojure语言的属性程度不够高,第二,课本语言与clojure语言的差异点,我自以为理解的很透彻,导致了出现很奇异的现象,我找不到解释,一点思路都没有。第三,也就是最关键的一点,我根本不知道如何......
  • 时钟(STM32F103)
    时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波时钟是单片机的脉搏时钟源:              频率         材料              用途高速外部振荡器(HSE)   4-16MHz     晶体/陶瓷       ......
  • 【stm32】软件定时器
    【stm32】软件定时器文章目录【stm32】软件定时器@[toc]为什么软件定时器相关代码使用例程参考链接为什么为什么会想着搞个软件定时器呢?之前的esp8266模块的通信,用的延时阻塞去实现的,对主程序影响挺大的。想着改改,不想上freertos啥的操作系统,就想着之前看4G模......