stm32入门自学笔记

2023-11-17

一、二极管:

二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件。

在这里插入图片描述

在这里插入图片描述

 二极管就是由一个由 P 型半导体和 N 型半导体形成的 PN 结加上相应的电极引线及管壳封装而成的

NPN和PNP型三极管的作用:

1.  NPN三极管:

基极加高电压,集电极与发射极短路,即三极管导通;

基极加低电压,集电极与发射极开路,即三极管截止。

2.  PNP三极管:

基极高电压,集电极与发射极开路,即三极管截止;

基极加低电位,集电极与发射极短路,即三极管导通。

二、输出模式:

1.推挽输出模式:stm32有绝对的控制权,高低电平都由是stm32决定。

2.开漏模式:p-mos是无效的,只有低电平有驱动能力,高电平没有驱动能力

 

 GPIO_Mode_AIN = 0x0,//模拟输入
  GPIO_Mode_IN_FLOATING = 0x04,//浮空输入
  GPIO_Mode_IPD = 0x28,//下拉输入
  GPIO_Mode_IPU = 0x48,//上拉输入
  GPIO_Mode_Out_OD = 0x14,//开漏输出
  GPIO_Mode_Out_PP = 0x10,//推挽输出
  GPIO_Mode_AF_OD = 0x1C,//复用开漏
  GPIO_Mode_AF_PP = 0x18//复用推挽

三、MOS管:

 MOS,是MOSFET的缩写。MOSFET 金属-氧化物半导体场效应晶体管,简称金氧半场效晶体管(Metal-Oxide-Semiconductor Field-Effect Transistor, MOSFET)。
  一般是金属(metal)—氧化物(oxide)—半导体(semiconductor)场效应晶体管,或者称是金属—绝缘体(insulator)—半导体。

它是利用控制输入回路的电场效应来控制输出回路电流的一种半导体器件。由于它仅靠半导体中的多数载流子导电,又称单极型晶体管。

四、中断:

EXTI 可以监测指定 GPIO 口的电平信号,当其指定的 GPIO 口产生电平变化时, EXTI 将立即向 NVIC 发出中断申请,经过 NVIC 裁决后即可中断 CPU 主程序,使 CPU 执行 EXTI 对应的中断程序(如PA0和PB0不能同时使用)
支持的触发方式:上升沿 / 下降沿 / 双边沿 / 软件触发
支持的 GPIO 口:所有 GPIO 口,但相同的 Pin不能同时触发中断
触发响应方式:中断响应 / 事件响应

 

STM32的中段不存在先来后到的排队方式,在任何时候都是优先级高的先响应

NVIC就是STM32中用来管理中断、分配优先级的

WWDG 窗口看门狗:程序卡死了,没有及时喂狗,窗口看门狗就会申请中断,使程序跳到窗口看门狗的中断程序 

AFIO是用来中断引脚选择的

:或门:与门:非门(输入1就输出0,0则相反)

 EXTI和NVIC的时钟是一直打开的不需要再打开,RCC和AFIO需要打开

EXTI的GPIO配置是浮空或上拉输入或带下拉输入

 个人经验:在很长一段时间里我都不理解是怎么从主函数跳转到中断函数的,看了江科大的视频才知道是由EXTI_InitStructure.EXTI_Trigger这个决定的看是什么触发中断然后跳进中断里

五、定时器:

定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断

stm32中的定时器分为3种:“基本定时器”(TIM6,TIM7)、“通用定时器”(TIM2、 TIM3、 TIM4和TIM5)、“高级定时器”(TIM1,TIM2)

高级定时器用的是APB2总线,通用和基本定时器都是用APB1总线。注意不要开错了 

常用的是通用定时器

配置时钟部分: 

void TIM_InternalClockConfig(TIM_TypeDef* TIMx);//选择内部时钟
void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
//选择ITRx其他定时器的时钟

void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,  uint16_t TIM_ICPolarity, uint16_t ICFilter);//选择TIx捕获通道的时钟(参数:1.定时器选择、2.引脚选择、3.极性选择、4.滤波器)
void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter);//选择外部时钟模式1输入的时钟

void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter);//选择外部时钟模式2输入的时钟

时基单元:用void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

中断输出控制:TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

运行控制:void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

CK_PSC是72M频率

预分频器的值(PSC)ARR自动重装器的值 CCR的值占空比(要和ARR配合使用)

 个人感受:在学习江科大的视频里6-2的部分,里面讲的

我疑惑了很久,通过自己一遍遍试和研究才能得出结论,所以还是要亲自实践一下

 PWM:

占空比:Ton/Ts;

分辨率:占空比变化的步距(如分辨率为0.1那就是1.1可以变到1.2如果是1那就只能变到2.1越小越好不过要考虑硬件)

 ref:参考信号

输出模式是通过来选择的

输出模式控制器里面的执行逻辑:

 PWM的基本结构:(以PWM模式1为例)

 

对于普通的开漏/推挽输出引脚的控制权是来自输出数据寄存器的,如果想让定时器来控制引脚那就要使用复用开漏/推挽输出的模式,使用要使用PWM要把GPIO设置成GPIO_Mode_AF_PP模式

六、输入捕获(IC):

输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数

每个高级定时器和通用定时器都拥有4个输入捕获通道

可配置为PWMI模式,同时测量频率和占空比

可配合主从触发模式,实现硬件全自动测量

频率的定义就是一秒内重复出现了多少个周期那就是多少HZ

 

 

七、模拟/数字转换(ADC)

注意: 温度传感器和VREFINT只能出现在主ADC1中。
STM32是12位的,所以最大值是2的12次方-1也就是4095

ADC测电压是思路就是AD的范围是0-4095电压是0-3.3V(0对应0|3.3对应4095)中间只要乘除一个数就行

模拟看门狗可以监测指定的某些通道,当AD值高于它设定的上阈值或低于下阈值,自动跳入中断,可以在中断中执行程序。

GPIO口要选择 GPIO_Mode_AIN这个模式因为这个模式下GPIO口是无效的防止GPIO输出的电压对模拟电压进行干扰,所以是ADC的专属模式  

关于ADC预分频器只能选择6或者8分频,因为ADCCLK最大支持14MHz2,4分频都会超出范围

  转换模式:

1、单次转换,非扫描模式:只有序列1有效

2、连续转换,非扫描模式:只有序列1有效,转换结束后不会结束,而是立马开始下一轮转换,然后一直持续下去(不需要手动转换,也不用判断是否结束,直接读取数据寄存器)

3、单次转换,扫描模式:菜单可以一次转换多个AD转换

4、连续转换,扫描模式:菜单可以一次转换多个AD转换,转换结束后不会结束,而是立马开始下一轮转换,然后一直持续下去(不需要手动转换,也不用判断是否结束,直接读取数据寄存器)

八、DMA

 Flash是主闪存(是只读的),SRAM是运行内存

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32入门自学笔记 的相关文章

  • 使用 ChatGPT 总是出现「Something went wrong」解决方案

    1 前言 最近使用 ChatGPT 总是出现 Something went wrong If this issue persists please contact us through our help center at help ope
  • ARM汇编快速入门

    本文主要分享如何快速上手ARM汇编开发的经验 汇编开发中常见的Bug以及Debug方法 用的Convolution Dephtwise算子的汇编实现相对于C 版本的加速效果三方面内容 前言 神经网络模型能够在移动端实现快速推理离不开高性能算
  • c++STL标准库排序函数std::sort使用

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一 错误原因 二 修改后的代码 前言 C sort 排序函数 C STL 标准库中的 sort 函数 本质就是一个模板函数 正如表 1 中描述的 该函数专门用来对容器或普通数组中指定范围内
  • js json格式数组自定义key

    封装对象数组的key进行自定义的方法 changeKey arr key let newArr arr forEach item index gt let newObj for var i 0 i lt key length i newOb
  • python 学习笔记 opencv 安装

    OpenCV opencv 是一个跨平台的计算机视觉库 有英特尔公司发起并参与开发 在以下领域应用广泛 增强现实 人脸识别 手势识别 人机交互 动作识别 运动跟踪 物体识别 图像分区 机器人 Windows python下的安装 下载地址
  • VSCode下载和安装教程(超详细)以及解决VSCode下载速度特别慢的问题

    文章目录 1 引言 2 下载VSCode 3 解决VSCode下载速度特别慢 4 安装VSCode 1 引言 今天用WebStorm运行前端代码时 发现不太好打断点 于是 打算改用VSCode来运行前端代码 但前提是要安装VSCode 如下
  • SAM-Med2D:打破自然图像与医学图像的领域鸿沟,医疗版 SAM 开源了!

    关注公众号 发现CV技术之美 本文转载自书生 OpenGVLab 由于医学图像和自然图像之间存在较大差异 以及缺少大规模医学图像基准数据集 这是导致AI在医学领域进展缓慢的原因之一 构建大规模基准数据集和可靠的基线模型 能够推动AI在医疗领
  • 关于Python的定义

    Python是一种高级编程语言 它被广泛应用于人工智能 大数据分析 网络编程 游戏开发等领域 Python的语法简单易学 代码可读性较高 使用简便 成为初学者入门的优秀选择 Python具有丰富的第三方库 可以轻松地实现各种功能 其中最为出
  • 最新让机器“看见”—计算机视觉原理及实战-从OpenCV基础到深度学习实战

    课程目标让机器 看见 计算机视觉原理及实战 从OpenCV基础到深度学习实战课程简介课程由浅入深 图文并茂 在讲述概念的同时注重和实际系统结合 为快速上手并深入研究无人驾驶 智能机器人 人机交互 医疗等行业应用奠定坚实基础 下载地址 百度网
  • 可见光与红外双模态图像融合行人检测

    摘要 由于传统融合检测方法未能较好地解决双模态融合中冗余信息带来的误检 漏检问题 为了更有效地利用双模态信息 提出一种光照感知和卷积块注意模块相结合的双模态特征融合行人检测网络 IWFC Net 首先根据可见光图像提取光照感知值 将其作为融

随机推荐

  • STM32------ADC基本原理

    目录 一 ADC 1 ADC简介 2 stm32f10x ADC特点 3 stm32f10x 大容量芯片带3个ADC控制器 4 ADC通道和引脚对应关系 5 ADC引脚 6 ADC框图 7 STM32F1的ADC的各个通道可以单次 连续 扫
  • Stable Diffusion Prompt用法

    Stable Diffusion可以根据你输入的提示词 prompt 来绘制出想象中的画面 1 正向提示词 Prompt 提高图像质量的prompt prompt 用途 HDR UHD 64K HDR UHD 4K 8K和64K 这样的质量
  • TinyMCE的上传文件的功能

    记录一下TinyMCE的上传文件的功能 用Base64上传图片 if meta filetype image var input document createElement input input setAttribute type fi
  • windows下安装使用git-lfs克隆大文件

    下载安装git lfs工具 首先去git lfs这里 下载相应平台的工具 我下载的windows版本 非安装版本 直接配置到系统环境变量里 执行以下命令验证是否成功 git lfs install 克隆数据集 这样自动会下载里边的大文件 g
  • 在vivado中使用tcl脚本(UG894)

    本文源自UG894 主要介绍如何在vivado中使用tcl脚本 1 vivado中如何获取tcl help vivado中任何自带的命令都可以通过 help 获取帮助信息 也可以直接输入 help 取得vivado命令合集 并通过 help
  • News Distribution(Codeforces 1167C) (并查集简单应用)

    并查集查询时间复杂度是O 1 合并时间复杂度才是O n 题意 n 人数 m 组数 m行 先输入k 表示这组有k个人 下面是k个人的编号 同组可以传递信息 问当第i个人是信息源时 有几个人知道信息 AC代码 include
  • 排序算法6-归并排序

    1 什么是归并排序 归并排序是建立在归并操作上的一种有效的排序算法 该算法是采用分治法 Divide and Conquer 的一个非常典型的应用 将已有序的子 序列合并 得到完全有序的序列 即先使每个子序列有序 再使子序列段间有序 若将两
  • 电路端接电阻与信号完整性

    信号沿着传输线传播时 每时每刻阻抗都可能发生变化 例如 PCB走线的宽度或者厚度发生变化 PCB过孔 PCB转角 PCB上的电阻 电容 电感 接插件和器件引脚都会产生阻抗变化 若走线的瞬时阻抗 只和传输线的横截面积和材质特性有关 发生变化
  • keil使用arm_math文件报错

    引入该文件后编译报错 application arm math h 306 error 35 error directive Define according the used Cortex cor 添加如下全局宏定义 USE HAL DR
  • 如何将任意数据保存到以太坊区块链?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 虽然有北大博士讲 95 的区块链项目都没有前途 但我们知道区块链还是有它的优势 比如数据的不可篡改性对于版权保护有相当大的意义 而地址的匿名性则有其他潜在的用途 那么 如何
  • TensorFlow、PyTorch 和 Keras

    1 可用的 RNN 类型 在寻找 NLP 问题的深度学习解决方案时 循环神经网络 RNN 是开发人员最流行的首选架构 因此 从这个角度来比较框架是有意义的 所有正在考虑的框架都具有允许我们创建简单 RNN及其更进化的变体的模块 门控循环单元
  • V4l2框架基础知识(二)

    V4L2对uvc USB video class 免驱usb设备的编程框架 主要用于采集USB摄像头 采集方式 打开视频设备 设置视频设备的属性 缩放 裁剪等 在linux编程中直接使用ioctl 函数对设备I O通道进行管理 V4L2操作
  • 一文看懂PPP协议——PPP协议简介

    今天给大家介绍一下PPP协议的相关内容 文章浅显易懂 特别适合0基础同学 本文主将主要从PPP概述 PPP链路建立过程和PPP认证三个角度对PPP协议进行讲解 一 PPP概述 PPP point to point协议 即点对点协议 是数据链
  • unity获取用户鼠标与键盘操作

    Unity鼠标键盘输入 代码写在Update 函数中 屏幕坐标的原点在屏幕的左下角 1 通过Input API 获得鼠标的操作信息 1 获得鼠标的坐标位置 Input mousePosition 2 检测鼠标按下 Input GetMous
  • oracle如何去列的重复,oracle重复列只显示一次的实现

    CREATE TABLE test ob id VARCHAR 32 ob name VARCHAR 32 INSERT INTO test VALUES A001 A001 a INSERT INTO test VALUES A001 A
  • YOLOE,2022年新版YOLO解读

    前言 这是2022年第一个关于YOLO的改版 该版本由百度提出 称之为YOLOE 是目前各项指标sota的工业目检测器 性能sota且部署相对友好 该检测器的设计机制包括 Anchor free无锚盒机制 可扩展的backbone和neck
  • Spring的工作原理(二)IOC-DI

    目录 Spring的工作原理 二 IOC DI 一 什么是IOC 什么是DI 1 1 IOC Inversion of Control 控制反转 1 2 DI Dependency Injection 依赖注入 二 IOC控制反转基础知识
  • 【Python】ChineseCalendar包简介

    ChineseCalendar 是一个 Python 包 用于获取中国传统日历信息 这个包提供了中国农历 二十四节气 传统节日 黄历等信息 你可以使用以下命令来安装这个包 pip install ChineseCalendar 安装完成后
  • iOS开发 将html加载到页面上

    记得要引入头文件 import WebKit WebKit h weakself myWebView WKWebView alloc initWithFrame CGRectMake 0 206 weakself view com widt
  • stm32入门自学笔记

    一 二极管 二极管是一种由半导体材料制成的一种具有单向导电性能的电子元器件 二极管就是由一个由 P 型半导体和 N 型半导体形成的 PN 结加上相应的电极引线及管壳封装而成的 NPN和PNP型三极管的作用 1 NPN三极管 基极加高电压 集