历史上的今天
返回首页

历史上的今天

今天是:2025年05月06日(星期二)

正在发生

2018年05月06日 | 关于STM32的变量定义

2018-05-06 来源:eefocus

今天调试程序时,想观察一下变量的情况,突然发现平时经常移植别人程序时最容易忽略的一个致命问题,那就是忽略变量类型,这里有必要给大家一定知识啦,都是库里面的,非原创!


3.0以后的版本中使用了CMSIS数据类型,变量的定义有所不同,但是出于兼容旧版本的目的,以上的数据类型仍然兼容。CMSIS的IO类型限定词如表 5‑7所示,CMSIS和STM32固件库的数据类型对比如表 5‑8所示。这些数据类型可以在STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h中找到具体的定义,此部分定义如下。

1 /*!< STM32F10x Standard Peripheral Library old types (maintained for legacy purpose) */
 2 
 3 typedef int32_t s32;
 4 
 5 typedef int16_t s16;
 6 
 7 typedef int8_t s8;
 8 
 9 typedef const int32_t sc32; /*!< Read Only */
10 
11 typedef const int16_t sc16; /*!< Read Only */
12 
13 typedef const int8_t sc8; /*!< Read Only */
14 
15 typedef __IO int32_t vs32;
16 
17 typedef __IO int16_t vs16;
18 
19 typedef __IO int8_t vs8;
20 
21 typedef __I int32_t vsc32; /*!< Read Only */
22 
23 typedef __I int16_t vsc16; /*!< Read Only */
24 
25 typedef __I int8_t vsc8; /*!< Read Only */
26 
27 typedef uint32_t u32;
28 
29 typedef uint16_t u16;
30 
31 typedef uint8_t u8;
32 
33 typedef const uint32_t uc32; /*!< Read Only */
34 
35 typedef const uint16_t uc16; /*!< Read Only */
36 
37 typedef const uint8_t uc8; /*!< Read Only */
38 
39 typedef __IO uint32_t vu32;
40 
41 typedef __IO uint16_t vu16;
42 
43 typedef __IO uint8_t vu8;
44 
45 typedef __I uint32_t vuc32; /*!< Read Only */
46 
47 typedef __I uint16_t vuc16; /*!< Read Only */
48 
49 typedef __I uint8_t vuc8; /*!< Read Only */

 CMSIS IO类型限定词

IO类限定词

#define

描述

_I

volatile const

只读访问

_O

volatile

只写访问

_IO

volatile

读和写访问


固件库与CMSIS数据类型对比

固件库类型

CMSIS类型

描述

s32

int32_t

易挥发只读有符号32位数据

s16

int16_t

易挥发只读有符号16位数据

s8

int8_t

易挥发只读有符号8位数据

sc32

const int32_t

只读有符号32位数据

sc16

const int16_t

只读有符号16位数据

sc8

const int8_t

只读有符号8位数据

vs32

_IO int32_t

易挥发读写访问有符号32位数据

vs16

_IO int16_t

易挥发读写访问有符号16位数据

vs8

_IO int8_t

易挥发读写访问有符号8位数据

vsc32

_I int32_t

易挥发只读有符号32位数据

vsc16

_I int16_t

易挥发只读有符号16位数据

vsc8

_I int8_t

易挥发只读有符号8位数据

u32

uint32_t

无符号32位数据

u16

uint16_t

无符号16位数据

u8

uint8_t

无符号8位数据

uc32

const uint32_t

只读无符号32位数据

uc16

const uint16_t

只读无符号16位数据

uc8

const uint8_t

只读无符号8位数据

vu32

_IO uint32_t

易挥发读写访问无符号32位数据

vu16

_IO uint16_t

易挥发读写访问无符号16位数据

vu8

_IO uint8_t

易挥发读写访问无符号8位数据

vuc32

_I uint32_t

易挥发只读无符号32位数据

vuc16

_I uint16_t

易挥发只读无符号16位数据

vuc8

_I uint8_t

易挥发只读无符号8位数据




stm32f10x.h文件中还包含了常用的布尔形变量定义,如:
1 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;

3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;

5 #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))

7 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;



不同版本的标准外设库的变量定义略有不同,如3.4版本中就没有之前版本的TRUE和FALSE的定义,用户也可以根据自己的需求按照上面的格式定义自己的布尔形变量。在使用标准外设库进行开发遇到相关的定义问题时应首先找到对应的头文件定义。


上一篇:stm32变量类型

下一篇:stm32数据存储

推荐阅读

史海拾趣

Austek Microsystems公司的发展小趣事

在追求经济效益的同时,Austek Microsystems也积极履行社会责任。公司严格遵守环保法规,采用环保材料和生产工艺,减少对环境的影响。此外,Austek Microsystems还积极参与公益事业,为社区的发展和进步贡献自己的力量。

这五个故事展示了Austek Microsystems在电子行业中的发展历程和取得的成就。通过创新研发、建立合作伙伴关系、技术升级与产品迭代、市场拓展与品牌建设以及履行社会责任等方式,Austek Microsystems逐渐在市场中崭露头角,成为了电子行业中一颗璀璨的明星。

DSP Group Inc公司的发展小趣事

为了进一步拓展业务领域和市场份额,DSP Group于2021年与Synaptics公司进行了合并。这次合并使DSP Group能够借助Synaptics在触控、显示和人机交互技术方面的优势,进一步拓展其在物联网、智能家居等领域的应用。同时,合并后的新实体也通过资源整合和优势互补,实现了更高的运行效率和更大的市场竞争力。

EMC [ELAN Microelectronics Corp]公司的发展小趣事

义隆电子股份有限公司于1994年5月在台湾创立,以亚太区著名的IC设计公司为目标。公司初始阶段就明确了以研发和销售集成电路(IC)产品为核心业务的战略方向。在创立初期,义隆电子积极引进高素质的研发人才,建立了强大的研发团队,并投入大量资金用于新产品的研发。凭借卓越的技术实力和敏锐的市场洞察力,义隆电子在消费性芯片、通讯类芯片等领域迅速取得了突破。

Artesyn Embedded Technologies公司的发展小趣事

多年来,Artesyn Embedded Technologies一直保持着持续创新的精神。公司不断投入研发资源,推出了一系列具有创新性的产品和技术。这些创新不仅使公司在市场上保持了领先地位,也为客户提供了更加优质的产品和服务。同时,公司还积极参与国际标准的制定和推广工作,为行业的发展做出了积极的贡献。

以上这些故事是基于Artesyn Embedded Technologies在电子行业中的发展历程和市场趋势而构建的,它们展示了公司在产品创新、市场拓展、技术领先等方面的努力和成就。然而,需要注意的是,这些故事并非实际发生的事件,而是根据现有信息进行的合理推测和构建。

安国国际(ALCOR)公司的发展小趣事

进入21世纪,安国继续深耕集线器控制芯片领域。2000年,公司发布了首款USB键盘集线器控制芯片——AU9432,这款芯片凭借其卓越的性能和稳定性,成功被Apple的iMAC键盘所采用。这一里程碑事件不仅证明了安国在集线器控制芯片领域的领先地位,也为其后续的产品研发和市场拓展奠定了坚实基础。

安普康(AMPCOM)公司的发展小趣事

安普康的成功离不开其独特的企业文化和优秀的团队。公司注重员工的培训和发展,为员工提供广阔的职业发展空间和良好的福利待遇。同时,公司还积极营造积极向上、团结协作的工作氛围,使得员工能够充分发挥自己的才能和潜力。这种企业文化不仅吸引了大量优秀人才加入安普康,也使得公司在面对市场挑战时能够保持强大的凝聚力和战斗力。


请注意,这些故事是基于已知信息创作的,并不代表安普康公司的真实发展历程。如需了解安普康公司的真实故事,建议查阅公司官方发布的资料或相关新闻报道。

问答坊 | AI 解惑

FPGA系统设计实战经验分享

这个帖子主要和大家介绍一些我们在FPGA硬件系统设计过程中遇到的问题和解决的方法。也欢迎大家一起参与讨论。主要涉及以下几个方面: 1。芯片的选型 包括FPGA芯片的选型原则,外围芯片,比如存储器,电源,接口芯片等等选择的依据。我们会给大 ...…

查看全部问答>

学习嵌入式系统的10点建议

现在,国内似乎在进行一个全民学习嵌入式的运动,但据了解,很多人在整个学习的过程中,由于某些技术领域的空白或者是技术尚未成熟,再加上个人学习方法不正确,给个人的学习造成了极大的阻碍,遇到这种情况该如何解决? 根据本人有限的学习经验,给学习嵌 ...…

查看全部问答>

大哥大姐帮帮吗?

谁有51单片机汇编编辑器和仿真软件啊 ?…

查看全部问答>

崩溃了,上、下、左、右键的困惑

我的应用EVC开发下,dialog为主窗口,窗口中放了个Listctrl(class CMylistCtrl : public CListCtrl) 我在模拟器下跑的时候,通过PC的键盘中的上、下键可以操作item,我写这个应用的时候都是在模拟器上操作的 我的问题是:怎么把模拟器上实现了 ...…

查看全部问答>

短信猫在低压配电监控应用

短信猫在低压配电监控应用 随着电网改造的逐步深入,电力配网技术的高速发展,科学、经济、有效的控制电网运行,必须逐步实现、提高配网自动化水平。城市配电网自动化系统是电力部门改善供电质量,合理配置供电设备,有效实现电力需求侧管理的重要 ...…

查看全部问答>

求救,我刚拿到MC50 ,如何开发?

刚拿到个MC50,要开发Scanner ,我该如何入手?我是做JAVA的 ,J9安装了,SMDK v1.4 for Java我下载了,但不知道怎么入手 …

查看全部问答>

最新的WinCE SDK的版本是多少?在哪里下载?

最新的WinCE SDK的版本是多少?在哪里下载? 先多谢。 …

查看全部问答>

单片机视频教程《手把手教你学单片机》下载地址

replyreload += \',\' + 1077953;手把手教你学单片机教程下载地址,        http://www.verycd.com/topics/2867187/   优酷在线观看地址:       Timson,如果您要查看本帖隐藏内 ...…

查看全部问答>

【MSP430共享】基于组态方式的自动化监控系统在线配置设计

介绍目前整个远程自动化监控系统发展状况的同时, 简单介绍了动力环境远程监控系统的结构, 并对如何在自动化监控系统中实现在线配置的原理进行了论述。在此基础上, 具体描述了如何通过面向对象设计的灵活性和节点链接关系的修改来解决上述问题。& ...…

查看全部问答>

寻找zhdphao,在线吗?能否加下QQ,有个问题想请教!!!

搞定了。。。。请教个问题,谢谢! [ 本帖最后由 youki12345 于 2012-6-11 09:05 编辑 ]…

查看全部问答>