学习stm32

位带操作(Bitwise Operation)是指在计算机编程中对数据的二进制位进行直接操作的一类操作。这些操作通常用于处理整数类型的数据,包括按位与(AND)、按位或(OR)、按位异或(XOR)、按位取反(NOT)、左移和右移等。

常见的位带操作

  1. 按位与(AND)&

    • 对应位都是1时结果为1,其它情况为0。
    • 例如:5 & 30101 & 0011)结果是10001)。
  2. 按位或(OR)|

    • 对应位有一个为1时结果为1。
    • 例如:5 | 30101 | 0011)结果是70111)。
  3. 按位异或(XOR)^

    • 对应位相同为0,不同为1。
    • 例如:5 ^ 30101 ^ 0011)结果是60110)。
  4. 按位取反(NOT)~

    • 对每个位进行取反,0变为1,1变为0。
    • 例如:~5~0101)结果是-6(在补码表示中)。
  5. 左移(Left Shift)<<

    • 将二进制数的位向左移动,右侧用0填充。
    • 例如:5 << 10101)结果是101010)。
  6. 右移(Right Shift)>>

    • 将二进制数的位向右移动,左侧填充符号位(对于有符号数)。
    • 例如:5 >> 10101)结果是20010)。

STM32微控制器系列具有多种外设,以下是一些常见外设及其作用:

1. FSMC (Flexible Static Memory Controller)

  • 作用:用于连接外部存储器(如SRAM、PSRAM、NOR/NAND Flash等)。FSMC允许微控制器与外部存储器之间进行高速数据交换,适用于大容量数据存储需求的应用。

2. I2S (Inter-IC Sound)

  • 作用:一种用于数字音频数据传输的接口,通常用于连接音频设备(如DAC、ADC、数字麦克风等)。I2S支持多声道音频数据传输,广泛应用于音频播放和录制系统。

3. SDIO (Secure Digital Input Output)

  • 作用:用于与SD卡和其他SDIO设备的通信。SDIO接口支持高速数据传输,适合需要存储大量数据的应用,如数据记录、音频存储等。

4. ADC (Analog-to-Digital Converter)

  • 作用:将模拟信号转换为数字信号。ADC用于采集传感器输出(如温度传感器、光传感器等),允许微控制器处理和分析这些模拟信号。

5. DAC (Digital-to-Analog Converter)

  • 作用:将数字信号转换为模拟信号。DAC用于输出模拟电压信号,常见于音频输出、信号生成等应用。

6. RTC (Real-Time Clock)

  • 作用:用于跟踪时间和日期,支持低功耗模式以保持时间。在需要时间戳或定时功能的应用中(如时钟、定时器、事件记录等)非常有用。

7. DMA (Direct Memory Access)

  • 作用:允许外设与内存之间直接进行数据传输,而无需CPU介入。DMA可以提高数据传输效率,减轻CPU负担,适合大数据量传输的场合,如ADC数据采集、音频流处理等。

其他常见外设

  • GPIO (General Purpose Input/Output):用于通用输入输出控制。
  • USART/UART:用于串行通信。
  • SPI (Serial Peripheral Interface)I2C (Inter-Integrated Circuit):用于与其他设备进行同步和异步数据传输。

这些外设的组合使得STM32微控制器非常灵活和强大,能够满足各种嵌入式应用的需求。

《STM32参考手册》中文版V10.0

《Cortex-M3权威指南》中文版(宋岩 译)

IAP(In-Application Programming)是STM32微控制器中的一种技术,允许设备在应用程序运行时更新其固件。这种方法非常适合需要远程更新或在不需要外部编程器的情况下进行固件升级的应用场景。下面是IAP的一些关键点和实用程序的基本概念:

IAP的工作原理

  1. 固件分区:通常,STM32的Flash存储会分为两个区域:一个用于当前运行的应用程序,另一个用于新固件的存储。

  2. 引导程序:IAP通常需要一个引导加载程序(Bootloader),这个程序负责接收新的固件数据并将其写入Flash。引导加载程序通常位于Flash的开头。

  3. 更新流程

    • 通过通信接口(如UART、CAN、USB等)接收新固件数据。
    • 将数据写入预定的Flash区域。
    • 更新完毕后,重启微控制器,使新的固件生效。

IAP的优点

  • 无需外部编程器:能够在现场或远程更新固件。
  • 灵活性:可以根据需要选择更新策略,比如选择性更新某些功能或模块。
  • 安全性:可以实现固件完整性验证(如CRC校验),确保更新后的固件是有效的。
相关推荐
菜鸡中的奋斗鸡→挣扎鸡2 小时前
滑动窗口 + 算法复习
数据结构·算法
axxy20003 小时前
leetcode之hot100---240搜索二维矩阵II(C++)
数据结构·算法
Uu_05kkq5 小时前
【C语言1】C语言常见概念(总结复习篇)——库函数、ASCII码、转义字符
c语言·数据结构·算法
1nullptr6 小时前
三次翻转实现数组元素的旋转
数据结构
TT哇6 小时前
【数据结构练习题】链表与LinkedList
java·数据结构·链表
A懿轩A7 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
1 9 J8 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
汝即来归8 小时前
选择排序和冒泡排序;MySQL架构
数据结构·算法·排序算法
aaasssdddd9611 小时前
C++的封装(十四):《设计模式》这本书
数据结构·c++·设计模式
芳菲菲其弥章11 小时前
数据结构经典算法总复习(下卷)
数据结构·算法