历史上的今天
返回首页

历史上的今天

今天是:2024年09月08日(星期日)

2018年09月08日 | 学习STM8 关于数据类型的定义心得

2018-09-08 来源:eefocus

最近一直在学STM8  代码里面一直出现u8 * / u16等等 


类似


#include"stm8s.h"

 

/*芯片唯一的ID地址 96位*/

define UNIQUE_ID_START_ADDR  0x48CD

 

u8 i;

s16 temp;

s8 t;

u8 * pUniqueId;

 

 

 

int main( void )

{

  return 0;

}

一直不理解什么是u8 今天再网上好好的找找发现u8 是unsigned int 8的意思。如果是标准的C语言表达方式应该是

unsigned int 8


但是STM就变成了u8 一开始很郁闷不知道是什么意思。但是现在这样一想


volatile signed 32也就变成了


vs32 


说到底,ST搞这么多花样嘛,也就是开发人员强行偷了个懒,结果搞得我们初学者头晕。不过怎么样变化都是基于标准C的。


可以参考


//stdint.h 这里是C语言的标准表达方式

 

   //第36行开始

typedef   signed          char int8_t;  //  标准表达方式 signed char 等同于 int8_t;

typedef   signed short     int int16_t;

typedef   signed           int int32_t;//  如果是在32位环境里,int代表4个字节32位

typedef   signed       __int64 int64_t;

 

typedef unsigned          char uint8_t;

typedef unsigned short     int uint16_t;

typedef unsigned           int uint32_t;

typedef unsigned       __int64 uint64_t;

 

typedef   signed          char int_least8_t;

typedef   signed short     int int_least16_t;

typedef   signed           int int_least32_t;

typedef   signed       __int64 int_least64_t;

 

typedef unsigned          char uint_least8_t;

typedef unsigned short     int uint_least16_t;

typedef unsigned           int uint_least32_t;

typedef unsigned       __int64 uint_least64_t;

 

typedef   signed           int int_fast8_t;

typedef   signed           int int_fast16_t;

typedef   signed           int int_fast32_t;

typedef   signed       __int64 int_fast64_t;

 

typedef unsigned           int uint_fast8_t;

typedef unsigned           int uint_fast16_t;

typedef unsigned           int uint_fast32_t;

typedef unsigned       __int64 uint_fast64_t;

 

typedef   signed           int intptr_t;

typedef unsigned           int uintptr_t;

 

typedef   signed       __int64 intmax_t;

typedef unsigned       __int64 uintmax_t;


关于STM32 为了兼容旧版本的

typedef int32_t  s32;

typedef int16_t s16;

typedef int8_t  s8;

 

typedef const int32_t sc32; 

typedef const int16_t sc16; 

typedef const int8_t sc8;  

 

typedef __IO int32_t  vs32;

typedef __IO int16_t  vs16;

typedef __IO int8_t   vs8;

 

typedef __I int32_t vsc32; 

typedef __I int16_t vsc16; 

typedef __I int8_t vsc8;  

 

typedef uint32_t  u32;

typedef uint16_t u16;

typedef uint8_t  u8;

 

typedef const uint32_t uc32; 

typedef const uint16_t uc16; 

typedef const uint8_t uc8;  

 

typedef __IO uint32_t  vu32;

typedef __IO uint16_t vu16;

typedef __IO uint8_t  vu8;

 

typedef __I uint32_t vuc32; 

typedef __I uint16_t vuc16; 

typedef __I uint8_t vuc8;  


可以作为参考理解。

以上


**修改下,更加容易理解的地方应该是在这里


/*!< Signed integer types  */

typedef   signed char     int8_t;

typedef   signed short    int16_t;

typedef   signed long     int32_t;

/*!< Unsigned integer types  */

typedef unsigned char     uint8_t;

typedef unsigned short    uint16_t;

typedef unsigned long     uint32_t;



这里就能看出,int8_t 应该是 singed char 也就是说声明新的类型名来代替原有的类型名,这样的好处就是定义一种新的数据类型,这种类型又可以用来声明属于该类型的变量,大多数情况typedef用来定义一种结构体,因为原有数据类型不够用了。


有个例子


自定义数据类型

经常用来将结构定义成一个数据类型~如:

typedef struct student{

char name[10];

char kemu[10];

double mark;

}student;

这样就可以直接定义数据

student stu;

stu.name = '张三';

stu.kemu = '语文';

stu.mark = 97.5;


用起来也比较方便。


以上


推荐阅读

史海拾趣

General Transistor Corp公司的发展小趣事

随着技术的不断进步,GTC意识到仅仅作为分销商已无法满足市场需求。于是,公司开始逐步涉足电子元器件的生产领域,专注于研发和生产具有自主知识产权的产品。通过持续的技术创新和研发投入,GTC成功推出了一系列高性能的晶体管、集成电路等新产品,进一步丰富了其产品线。这些产品不仅在国内市场受到好评,还逐渐走向国际市场。

启英泰伦(Chiplntelli)公司的发展小趣事

随着技术的不断进步和市场需求的日益增长,启英泰伦的芯片产品历经了多次迭代。从最初的AI语音芯片,到后来的AI语音Wi-Fi芯片、AI语音BLE芯片,公司形成了系列化的芯片产品布局。这些芯片广泛应用于智能家居、智能家电、智慧照明等领域,为客户提供了更自然、更简单、更智能的人机交互体验。启英泰伦的芯片产品在市场上获得了广泛的认可,服务客户超过5000家,累计装机量突破2000万台。

ANYSOLAR LTD.公司的发展小趣事

随着ANYSOLAR的产品在市场上取得一定的成功,公司开始考虑市场拓展。李明带领团队深入调研国内外市场需求,发现欧洲市场对高效、环保的光伏材料有着巨大的需求。于是,ANYSOLAR开始积极寻求与国际企业的合作机会。

经过多次洽谈和协商,ANYSOLAR最终与一家欧洲知名光伏企业达成了战略合作协议。双方共同投资建立生产线,共同开拓市场。这一合作不仅为ANYSOLAR带来了稳定的订单和资金支持,也提升了公司的品牌知名度和国际影响力。

协顺电子(Finecables)公司的发展小趣事

随着公司业务的不断拓展,协顺电子逐渐意识到品质和创新的重要性。公司投入大量资金引进先进的生产设备和技术人才,同时加强内部管理和质量控制。此外,协顺电子还积极与国内外知名企业和研究机构合作,共同研发新产品和新技术。这些举措使得公司的产品质量和技术水平得到了显著提升,也赢得了客户的广泛赞誉。

Elite公司的发展小趣事

在科技日新月异的今天,Elite始终保持着对新技术和新趋势的敏锐洞察力。公司不断加大研发投入力度,积极探索新技术、新产品和新市场。同时,Elite还注重人才培养和团队建设,为公司未来发展提供有力保障。展望未来,Elite将继续秉承创新、务实、进取的企业精神,致力于成为全球领先的电子科技企业。

请注意,以上故事均为虚构内容,仅供参考。

中移物联网(Chinamobile)公司的发展小趣事

2024年2月,中移物联网携自主打造的专业通信模组品牌——中移物联OneMO亮相巴塞罗那世界移动通信大会。这一品牌展示了公司在物联网模组领域的创新能力和技术实力。通过与国际知名企业的交流与合作,中移物联网进一步拓宽了国际视野,为公司的国际化发展提供了有力支持。

问答坊 | AI 解惑

关于音频驱动 求问

音频配置文件有alsa.conf 和 asound.conf  看了alsa.conf,里面有 @hooks [         {                 func load               ...…

查看全部问答>

请问一个安装arm-elf-tools-20030314的问题

我在安装的时候,先碰到一个问题是 tail: cannot open `+43\' for reading: No such file or directory 网上搜索了一下,普遍的解决方法是:找到arm-elf-tools-20040427.sh文件的第39行, tail +${SKIP} ${SCRIPT} ¦ gunzip ¦ tar xvf ...…

查看全部问答>

mibcomp使用

vxworks中 如何使用mibcomp编辑命令? 我运行命令行mibcomp -o snmpMib2.c -stub snmpMib2.mib 出现如下错误: exclude error: undefined value referefence \"egp\" 为什么呢? 不知mibcomp命令 是不是这样使用的,初学者,还请指教!…

查看全部问答>

ATmega16使用内部时钟

ATmega16使用内部时钟时,其外围电路是怎样的…

查看全部问答>

MSP430G2333

MSP430G2333哪几个IO具有处理触摸按键的功能?知道的麻烦说下,谢谢…

查看全部问答>

華為公司電路板(PCB)設計規範

華為公司電路板(PCB)設計規範…

查看全部问答>

【Nucleo+BLUENRG心得】+ 旋转方块

今天耍了个很好玩的功能,按键控制app中方框的转动,我把代码修改到了每按一次用户键,方块就会X,Y,Z一起转动,很好玩的功能 修改的代码如下 方块转动的图片: …

查看全部问答>

EEWORLD大学堂----TI SimpleLink轻松、快捷的无线解决方案

TI SimpleLink轻松、快捷的无线解决方案:https://training.eeworld.com.cn/course/396…

查看全部问答>