STM32学习笔记-B站铁头山羊课程笔记(一):STM32预备知识

一、STM32单片机的编号含义

  类比其他电子产品。

  I(品牌:苹果)phone(产品类型:手机)15(产品系列)蓝色128G(规格型号)

  ST(品牌:意法半导体)M32(产品类型:32位单片机) F103(产品系列) C8T6(规格型号)

C8T6规格型号的含义:

  C:48引脚

  8:Flash容量为64Kbyte

  T:封装类型为LQFP四方形

  6:工作温度范围-40~85℃

二、STM32单片机的规格说明

1.总体功能组成

STM32单片机相当于人的大脑,开发板上的各种外设相当于人的眼耳口鼻手。

单片机控制各个外设实现数据采集和功能执行的过程,就好像人在世界上生活的过程,随时随地都在从外界获取信息(视觉传感器-眼,声音传感器-耳,压感传感器-皮肤),也在随时随地执行各种功能(舵机-头部转动,机械臂拿起重物-手拿起重物),并且这两个过程还是互相协调的。

其中我们最先要学习的是GPIO。GPIO共分A-D四个组,每个组可以看做是人的四肢其一,而GPIO下的各个引脚可以看做肢体上的指头。

2.引脚功能说明

  芯片封装的左上角有一个点,用于判断引脚编号,正确放置时,点的左边为1号引脚,上方为48号引脚

  特殊引脚说明:

  VDD(Voltage Drain-Drain):接3.3V,用于给单片机供电(相当于正极)

  VSS(Voltage Source-Source):接0V,相当于地

  NRST:复位按钮(接复位按钮)

  VBAT:备用电池

  BOOT0:启动模式选择

3.GPIO

①STM32单片机的GPIO引脚

  GPIOA:PA0 PA1 PA2 … PA15 共15个

  GPIOB:PB0 PB1 PB2… PB15 共15个

  GPIOC:PC13 PC14 PC15 共3个

  GPIOD:PD0 PD1 共2个

②GPIO的8种工作模式
输出推挽开漏
通用通用输出推挽通用输出开漏
复用复用输出推挽复用输出开漏

输入输入上拉输入下拉输入浮空模拟模式

推挽输出原理:所谓推挽(Push-Pull),就是当单片机处于这种模式时,GPIO有高电平向外推电流(推-Push)和低电平向内拉电流(挽-Pull)两种状态。

  单片机对引脚输出低电平0,上部与漏极VDD连接的P-MOS管断开,下部与源极VSS连接的N-MOS管连通,GPIO对外呈现低电平,将电流从外部拉入(Pull-in),即挽(Pull)电流;

  单片机对引脚输出高电平1,上部与漏极VDD连接的P-MOS管接通,下部与源极VSS连接的N-MOS管断开,GPIO对外呈现高电平,将电流从内部推出(Push-out),即推(Push)电流。

开漏输出原理:所谓开漏(Open-Drain),就是使与漏极VDD(Drain)连接的P-MOS管始终处于断开状态。

  当单片机向引脚输出低电平0时,下部N-MOS管与源极VSS(Source)接通,使GPIO对外输出低电平;

  当单片机向引脚输出高电平1时,下部与源极VSS(Source)连接的N-MOS管断开,使GPIO对外呈现高阻态。

单片机的输出状态寄存器赋0寄存器赋1
推挽输出(Push-Pull)低电平,向内拉电流高电平,向外推电流
开漏输出(Open-Drain)低电平对外高阻态

③GPIO的输出速度问题

  IO的最大输出速度:指的是向IO交替写0和1且输出不失真的最快速度

理想情况下,向IO写入0和1时,高低电平的切换应该以阶跃的形式完成,但在实际写入过程中,IO切换高低电平时,需要一定的上升时间和下降时间。而中间的保持时间才是该高/低电平有效的作用时间。

当写入速度越来越快,单位时间内输出电平量增多,保持时间减少。当保持时间降为0时,输出失真。此时有两个方法使输出不失真:

1' 降低IO的输出速度

2' 减少上升时间和下降时间

如图,减少上升时间和下降时间可以使IO的最大输出速度提高。

如上图,根据每个上升-保持-下降周期(或下降-保持-上升周期)的时长,可以确定IO引脚的最大输出频率。如下图,在实际设计与调用的过程中,需选择符合设计要求的最小速度。速度过大会增加耗电并引入EMI问题。

上图所示的LED,一般频率不超过100HZ(人眼分辨频率45.8HZ),故选择低速2MHZ即可。

在调用具体外设时,需考虑外设芯片的工作速度。IO最大输出速度需大于自己调用外设的所需速度。如图示TLE5012BD工作速度为8MHZ,IO最大输出速度选择10MHZ即可。

如上图所示,最小系统板的USB2.0接口速度为12Mbps(12MHZ)故CPU速度需选择为高速50MHZ。

React Hooks 是 React 16.8 中新增的特性,它可以让你在函数组件中使用 state、生命周期钩子等 React 特性。使用 Hooks 可以让你写出更简洁、可复用且易于测试的代码。 React Hooks 提供了系列的 Hook 函数,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useImperativeHandle、useLayoutEffect 和 useDebugValue。每个 Hook 都有特定的用途,可以帮助你处理不同的问题。 下面是 React Hooks 的些常用 Hook 函数: 1. useState useState 是最常用的 Hook 之,它可以让你在函数组件中使用 state。useState 接受个初始状态值,并返回个数组,数组的第个值是当前 state 值,第二个值是更新 state 值的函数。 ``` const [count, setCount] = useState(0); ``` 2. useEffect useEffect 可以让你在组件渲染后执行些副作用操作,比如订阅事件、异步请求数据等。useEffect 接受两个参数,第个参数是个回调函数,第二个参数是个数组,用于控制 useEffect 的执行时机。 ``` useEffect(() => { // 这里可以执行副作用操作 }, [dependencies]); ``` 3. useContext useContext 可以让你在组件树中获取 context 的值。它接受个 context 对象,并返回该 context 的当前值。 ``` const value = useContext(MyContext); ``` 4. useRef useRef 可以让你在组件之间共享个可变的引用。它返回个对象,该对象的 current 属性可以存储任何值,并在组件的生命周期中保持不变。 ``` const ref = useRef(initialValue); ref.current = value; ``` 5. useCallback useCallback 可以让你缓存个函数,以避免在每次渲染时都创建个新的函数实例。它接受个回调函数和个依赖数组,并返回个 memoized 的回调函数。 ``` const memoizedCallback = useCallback(() => { // 这里是回调函数的逻辑 }, [dependencies]); ``` 6. useMemo useMemo 可以让你缓存个计算结果,以避免在每次渲染时都重新计算。它接受个计算函数和个依赖数组,并返回个 memoized 的计算结果。 ``` const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); ``` 以上就是 React Hooks 的些常用 Hook 函数,它们可以帮助你更好地处理组件状态、副作用、上下文和性能优化等问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值