当前位置: 首页 > article >正文

学习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校验),确保更新后的固件是有效的。


http://www.kler.cn/a/374387.html

相关文章:

  • HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务
  • SLAM/数字图象处理基础
  • Mysql 查询性能调优总结
  • IIC驱动EEPROM
  • Doris Tablet 损坏如何应对?能恢复数据吗?
  • Scala项目(图书管理系统)
  • 免费送源码:Java+ssm++MVC+HTML+CSS+MySQL springboot 社区医院信息管理系统的设计与实现 计算机毕业设计原创定制
  • 校园社团信息管理平台:Spring Boot技术实战指南
  • 自修室预约系统|基于java和小程序的自修室预约系统设计与实现(源码+数据库+文档)
  • CentOS 9 Stream 上安装 IntelliJ IDEA
  • 什么是线程局部变量(ThreadLocal)?
  • 金融领域中的敏感性分析和期权价值计算相关的操作
  • 动态规划 01背包(算法)
  • OV代码签名证书
  • Leetcode 移除元素
  • 流畅!HTMLCSS打造网格方块加载动画
  • 使用 Elastic、OpenLLMetry 和 OpenTelemetry 跟踪 LangChain 应用程序
  • 如何基于Apache SeaTunnel 读取Oracle的数据
  • Metasploit(MSF)使用
  • elasticsearch7.x在k8s中的部署
  • 【Visual Studio】解决 CC++ 控制台程序 printf 函数输出中文和换行符显示异常
  • logback 替换日志中的类名
  • 【论文复现】以思维链为线索推理隐含情感
  • git commit应遵循的提交规范
  • 【设计模式】Java创建型设计模式之工厂模式魔法:打造灵活的冰箱工厂
  • 科研项目:利用AI大模型获得基金资助的10个原则