STM32中VU和U的区别

STM32-代码分析1-1 #define  __IO  volatile typedef unsigned int  uint32_t; typedef __IO uint32_t  vu32; typedef unsigned short int   uint16_t;​ 分析1:volatile  volatile作为指令关键字,确保本条指令不会因编译器的优化而省略,且要... 阅读详情

先看一下这类数据在STM32的库中是怎么定义的

 

 

 

 

 

 

 经过这么整理,就可以总结出U对应C语言中的unsigned(无符号整数),后面的数字可以对应C语言的数据长度分类。VU对应C语言中的volatile.

下面重点介绍一下volatile

  通过查阅资料,通俗讲volatile是一个关键字,用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最终值。
    来自百度百科的解释:https://baike.baidu.com/item/volatile/10606957
    volatile是一个类型修饰符(type specifier).volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。

    即volatile 影响编译器编译的结果:
    volatile修饰的变量是说这变量可能会被意想不到地改变或者随时可能发生变化,这样要求编译器处理与volatile变量有关的运算时,不要进行编译优化,以免出错。

例如:
volatile int i=10;
int j = i;
...
int k = i;
volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。
而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问,不会出错。

原文链接:https://blog.youkuaiyun.com/xuw_xy/article/details/96284013
————————————————

C语言积累整理---volatile关键字 volatile volatile是一个**特征修饰符**(type specifier). volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。 volatile(*不稳地的,反复的*)的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。 volatile 的特性 表示一个变量也许会被后台程序改变,关键字 volatile 是与 const 绝对对立的。它指示一个变量也许会被某种方式修改,这种方式按照正常程序流程分析是无. 阅读详情

相关推荐

【STM32】深入解析STM32类型定义:从uint32_t到u32的转换与应用

本文深入解析了STM32开发中uint32_t与u32等类型定义的区别与联系。通过剖析标准类型定义、厂商别名以及volatile/const等关键字的妙用,阐述了如何正确使用这些类型来提升代码可移植性、可读性,并避免硬件访问和数据处理中的常见错误,是STM32开发者编写健壮、高效嵌入式代码的必备知识。

assembly8low的博客 582

stm32学习之关键字

stm32学习之关键字:define域typedef的区别,volatile typedef __IO uint32_t vu32; typedef __IO uint16_t vu16; typedef __IO uint8_t vu8; #define pchar char* //pchar是被替换的那个,在前面 pchar pstr1,pstr2; char *pstr1,pstr2//pstr1是指针,pstr2不是指针 typedef char* pchar //pchar是别名,在后

xy_xm的博客 1212

STM32-蓝桥杯嵌入式LCD字符颜色、高亮显示

在做第九届省赛电子定时器的时候,里面有一个要求是高亮显示某个字符,然后就研究了一下如何进行字符颜色更改和高亮。

FILWY_M 1万+

C语言中vu16什么意思,规范化编程

题目:规范化和模块化编程0引言通过一年多的编程经历,经常会为杂乱无章的程序弄的晕头转向,影响编程质量和进度。同时也为了程序的可移植性和可读性,规范化和模块化编程应该在开始编写的第一个程序时就要有规范化和模块化编程的思想,并在实践中运用,养成规范化和模块化编程的好习惯。1规范化编程谈到规范性编程这里我们是在符合c语言基本运用原理的基础上加以说明,以下我们主要讲以下几个方面:1.1 定义一个自己con...

weixin_39838302的博客 2830

STM32学习笔记(标准库版)

一、 STM32数据类型 typedef signed long s32; typedef signed short s16; typedef signed char s8; typedef signed long const sc32; /* Read Only / typedef signed short const sc16; / Read Only / typedef signed char const sc8; / Read Only / typedef volatile signed long

IDEA_蒋 1184

STM32F407 SPI FLASH存储代码SRAM执行代码

STM32在外部SRAM中运行代码

zhaodong1102的博客 3196

基于stm32的正点原子Lora模块教程

基于stm32的LoRa模块调试教程初识LoRa上手LoRa程序编写结果演示再见LoRa 初识LoRa 简单来讲,LoRa就是一种低功耗远程无线通信技术。它是基于Semtech公司SX1276/1278芯片开发的无线数传模块,这种芯片集成规模小、效率高,从而让LoRa模块拥有高接收灵敏度。那么它相比于我们常用的蓝牙和WiFi有什么优势呢?总结而言,就是低功耗、远距离、抗干扰。相同条件下,LoRa模块比WIFI模块传输距离更远。多见的WIFI、蓝牙等近距离无线通信技术,通信距离一般也就只有几十米左右。如果要覆

weixin_51426754的博客 6万+

STM32F4 Flash数据的保存和读取。

STM32F4 Flash数据的保存和读取。

张一西的博客 9216

【☠️️社死现场の老板来了☠️️】小伙,搞C语言嵌入式开发这么久了,还不知道u8、u16、u32、s8、s16、s32是什么意思啊?

首先开门见山: u8是unsigned char,u16是unsigned short,u32是unsigned long;s8是signed char,s16是signed short,s32是signed long。 然后娓娓道来: 显而易见,u就是unsigned的缩写,s就是signed的缩写,8就表示8个二进制位(一个字节),16就表示16个二进制位(两个字节),32就表示32个二进制位(四个字节)。 这样写的目的,是为了提高跨平台的移植性与兼容性。不同平台数据类型定义都不尽相同,一套代码要想.

谁吃薄荷糖 1万+

STM32变量类型的说明

STM32中对变量类型的说明STM32f10x_type.h文件--变量类型

WorkBuddy任务对话上下文管理:Token、compact与上下文窗口实战指南

在大语言模型应用中,Token作为文本处理的最小单位,直接决定上下文窗口的消耗速度,而上下文窗口则限定了单次对话可承载的信息总量。当对话超出窗口限制时,compact压缩机制会触发有损摘要,导致关键约束丢失或工具调用结果被稀释。合理管理上下文不仅能提升多步骤任务的稳定性,还能显著降低Token成本与响应延迟。在文档处理、代码开发、多步自动化等场景中,通过主动压缩、状态外置、分段喂入等策略,可有效避免任务后期遗忘、版本混乱等问题。本文围绕WorkBuddy的上下文管理机制,从Token与compact的底层原

weixin_29055699的博客 391

STM32中断优先级NVIC

参考正点原子视频 为什么STM32需要中断 就拿你去饭馆吃饭为例。 使用中断就是饭做好了,服务员会为你端上来,然后你开始吃饭。端上来之前你爱干啥就干啥。 不使用中断,你需要一次一次去问服务员饭做好了没有,这期间你没办法去做其他事情。 CM3(Cortex M3)内核支持256个中断,其中包括16个内核中断和240个外部中断,并且具有256级的可编程中断设置 STM32并没有使用CM3内核的全部东西,而是只用了它的一部分 STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优

xuexiwd的博客 4023

STM32 OTA升级原理分析

程序运行流程 正常程序运行流程 程序结构 正常程序从起始地址(0x08000000)开始写入 中断向量表(地址:0x08000004)用于存储中断处理程序向量。 中断处理函数(0x08000004+n)用于各种中断服务函数。 main函数(0x08000004+N),一个死循环,存放用户处理程序 程序启动流程 系统复位启动,从中断向量表中取出复位中断向量 跳转到复位中断处理函数,执行复位中断函数完成启动,跳转到main函数入口。 执行main函数循环。 中断产生,STM32硬件强制将PC指针指向中断向

weixin_43482414的博客 6900

从5V降到3.3V,你的LDO到底有多烫?手把手算功耗、选散热,避开这些坑

本文详细解析了LDO在5V转3.3V电路中的发热问题,提供了精确的功耗计算公式和散热设计方法。通过对比不同封装的热阻参数和优化PCB布局,帮助工程师有效降低LDO温度,避免热保护触发。文章还探讨了替代方案的技术拐点,为电源系统优化设计提供实用指导。

weixin_30304375的博客 436

JESD204B Subclass 1的SYSREF机制

SYSREF 是一个系统级同步脉冲信号,用于对齐 JESD204B 中的 LMFC(Local Multi-Frame Clock),从而实现每次建链的延迟一致性。核心点内容说明是系统参考跨多个芯片、多通道实现精确同步控制 LMFC决定所有设备的 LMFC 对齐点仅用于 Subclass 1是 JESD204B 实现确定性延迟的前提条件一般通过时钟芯片生成推荐使用 AD9528、LMK04828,支持 JESD204 专用输出建链过程中关键作用。

weixin_41230430的博客 1832

STM32中断与事件

这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。        图中的蓝色虚线箭头,标出了外部中断信号的传输路径,首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中

Damon的专栏 1761

深度学习之常用算子介绍

打开 onnx 模型图,可以看到它是一个有向无环图。除了 Input、Output ,其他都是算子(是操作,而不是节点)在ONNX(Open Neural Network Exchange)模型中,除了输入和输出,其他都是算子(Operations)。算子是表示神经网络模型中的不同操作或层的元素。一个ONNX模型由一系列算子组成,通过连接这些算子来定义模型的计算流程。

ueke1的博客 8460

ESP32 | STM32获取芯片MCU唯一标识符、MAC

与服务器通信时,需要进行设备绑定,采取了唯一标识的方式绑定,有获取设备MCU唯一标识符的需求,文中说明了系列芯片获取唯一标识符、MAC的方法。

weixin_49337111的博客 9053

python:numpy分享(保姆级教程)

创建数组:array和ndarray、rand()、randn()、arange()、randint()、uniform()astype()基础函数:ceil()、floor()、rint()、argmax()、argmin()、cumsum()、cumprod()numpy 是数据分析必不可少的第三方库,具有高性能的特点,多用于做数组分析。内置函数:ceil()、floor()、rint()主要用于数组计算,支持多维数组。array和ndarray。比较函数:all、any。去重函数:unique。

sulin123123的博客 1730

智能车图像处理4-入门级分析3 ---十字路口补线

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 1万+

STM32 BootLoader设置

2 . 编写程序,接收应用程序的BIN文件,通过FLASH WRITE函数写入到目标扇区3. 跳转到应用程序。

laocui1的博客 1114

时间序列分析(Time Series Analysis) 原理与代码实例讲解

时间序列分析(Time Series Analysis) - 原理与代码实例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词:时间序列预测,ARIMA模型,状态空间模型,SARIMA模型,机器学习

AI天才研究院 1248

STM32的NVIC与中断简介&&Cortex-M内核的识别

前言: 要想学习STM32中断,要先掌握STM32对优先级的定义;有51单片机开发经验会比较容易理解中断优先级;本篇博文基于STM32F103ZET6芯片和3.5.0标准库编写,从寄存器入手,最终实现编程的步骤。 一 基础知识 1. cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断。(本博文只介绍60个外部可屏蔽中断) 2. stm32只有84...

JiandaoStudio 1727

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32学习 - TFTLCD

本文记录了STM32F429开发板驱动2.8寸TFTLCD屏幕的调试过程。重点分析了FMC接口与ILI9341驱动芯片8080并口时序的匹配关系,通过地址线A18控制命令/数据选择。硬件上使用FMC的Bank1与LCD连接,软件通过定义LCD_REG和LCD_RAM两个地址实现读写操作,其中LCD_REG地址A18为0表示命令,LCD_RAM地址A18为1表示数据。文中以读取ID寄存器(0XD3)和设置寄存器(0xCF)为例,详细说明了读写操作的时序对应关系,并配有详细时序图说明。调试结果表明该设计方案能正

qq_36072565的博客 689

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

STM32 FSMC总线深入研究

STM32 FSMC总线深入研究   由于CPU与FPGA通信的需要,以及对8080总线的熟悉,首选采用了STM32的FSMC总线,作为片间通信接口。FSMC能达到16MHz的写入速度,理论上能写20fps的1024*768的图片哈哈。(当然实际上是不可能的,就算是DMA传输,数据源也跟不上,实际上刷模拟的图片每秒10fps,刷的很high)当然这不是本篇的要点,这里主要研究STM32的FSM

当今明月的专栏 3380

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 一个学机械的中年人半年时间入门物联网嵌入式的历程
下一篇: vs中的程序有debug和release两个版本的区别
三中十
博客等级 码龄5年 10粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值