学习STM8 关于数据类型的定义心得

发布者:数字之舞最新更新时间:2018-09-08 来源: eefocus关键字:STM8  数据类型 手机看文章 扫描二维码
随时随地手机看文章

最近一直在学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;


用起来也比较方便。


以上


关键字:STM8  数据类型 引用地址:学习STM8 关于数据类型的定义心得

上一篇:STM8L的RAM与内存模型
下一篇:STM8汇编代码分析

推荐阅读最新更新时间:2024-03-16 16:13

STM8 Nucleo-64开发板上使用GPIO和中断控制器驱动LED
NUCLEO-8S208RB(基于STM8S208RBT6)和NUCLEO-8L152R8(基于STM8L152R8T6)开发板可用于评估所有STM8S系列和STM8L系列微控制器的主要特性。 本应用笔记简要介绍了如何使用NUCLEO-8S208RB和NUCLEO-8L152R8开发板上的GPIO和中断控制器驱动一组LED指示灯。 当微控制器(本例中为STM8S208RBT6或STM8L152R8T6)使用连接到主机电脑的USB电缆供电时,LD2和LD5指示灯(不是板载的LED)开始闪烁。 每次按下“push”按钮,中断控制器产生一个用于控制I/O的中断,然后改变LED的显示方式。 1. 应用说明 本节主要介绍了在NU
[单片机]
在<font color='red'>STM8</font> Nucleo-64开发板上使用GPIO和中断控制器驱动LED
STM32学习之:stm32中C语言的数据类型
在编程过程中,不同的CPU,其数据类型的意义各不相同,所以一定要注意相应变量数据类型的定义和转换,否则在计算中可能会出现不确定的错误。 (一)C语言中的种类数据 整型:int short long 实型:float double STM32中的数据类型非常的多,常用的变量,文件中的定义如下: /* exact-width signed integer types */ typedef signed char int8_t; typedef signed short int int16_t; typedef signed int int32_t; typedef signed
[单片机]
STM8与汇编语言(6)--8位定时器应用之一
STM8单片机中的外设资源是比较丰富的,定时器有8位的也有16位的,下面的实验程序,就是利用8位定时器4来进行延时,然后驱动LED闪烁。 同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。 编译通过后,下载到开发板,运行程序,可以看到LED在闪烁,或者用示波器可以在LED引脚上看到方波。 在这里要特别提醒的是,从ST给的手册上看,这个定时器中的计数器是一个加1计数器,但本人在实验过程中感觉不太对,经过反复的实验,我认为应该是一个减1计数器(也许是我拿的手册不对,或许是理解上有误)。例如,当给定时器中的自动装载寄存器装入255时,产生的方波频率最小,就象下面代码中计算的
[单片机]
51单片机的串口结构
说明 目前主要封装了串口1的实例,采用可移植数据类型,可以同步移植到STM32、STM8等单片机; 需自行实现串口接收回调函数内容; 头文件 #ifndef __SERIAL_H__ #define __SERIAL_H__ #include reg52.h #ifndef uint8_t typedef unsigned char uint8_t; #endif #ifndef uint16_t typedef unsigned int uint16_t; #endif #ifndef uint32_t typedef unsigned long uint32_t; #endif /* 晶振频率 */ #
[单片机]
用 IAR 开发 STM8 时,简单软件延时不起作用的原因
近期有幸接手了前任工程师遗留的项目,MCU 选择的是 STM8L151XX,开发工具使用的是 IAR 。打开祖传代码后,通读了一遍,就用ST-Link烧录进去跑程序,结果发现和预想的效果不太一致,尤其是初始化LED闪烁的部分。 代码中LED闪烁原理比较简单,就是传统的更改GPIO电平,再软件延时几百毫秒,然后再改变GPIO电平的方法,这种传统的操作在学单片机第一课就已经开始使用了,按理说不应该出差错。在确认过晶振频率,分频系数,时间周期和机器周期的关系之后,粗略算出的延时函数和代码中的基本一致,所以排除了算数上的错误。延时函数大概是这样的 ↓ void delay_ms(u16 t) { u16 i; u16 j;
[单片机]
用 IAR 开发 <font color='red'>STM8</font> 时,简单软件延时不起作用的原因
STM8 PWM模式
STM8 PWM模式 STM8的脉冲宽度调制(PWM)模式可以产生一个由TIM1_ARR寄存器确定频率、由TIM1_CCRi寄存器确定占空比的信号。 在TIM1_CCMRi寄存器中的OCiM位写入'110'(PWM模式1)或'111'(PWM模式2),能够独立地设置每个OCi输出通道产生一路PWM。必须设置TIM1_CCMRi寄存器的OCiPE位使能相应的预装载寄存器,也可以设置TIM1_CR1寄存器的ARPE位使能自动重装载的预装载寄存器(在向上计数模式或中央对称模式中)。 由于仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIM1_EG
[单片机]
<font color='red'>STM8</font> PWM模式
stm8笔记1-搭建工程+孤独的小灯闪烁
这里使用的单片机是stm8s105s6,IDE是使用的IAR for stm8; 1,首先说一下stm8的时钟: 每一款cup都需要时钟,才能跑起来,就像小车需要发动机一样。 stm8的时钟源有三个,分别是外部晶振/外部时钟,内部高速RC振荡器和内部低速RC振荡器。 1.1 外部晶振和外部时钟信号(HSE)的不同点是,外部晶振是通过晶体谐振器,两个负载电容和单片机内部的电路想配合而产生时钟信号;而外部时钟信号是一个质量好且稳定的信号直接为单片机提供时钟。 两种模式的连接示意图: 1.2 高速内部RC振荡器(HSI) hsi信号由内部16MHZRC振荡器与一个可编程分频器(分频因子从1~8)产生。分频因子由寄存器C
[单片机]
<font color='red'>stm8</font>笔记1-搭建工程+孤独的小灯闪烁
【众拳STM8 46 讲】I2C 串形总线工作原理
I2C总线特点 1. I2C总线由飞利浦推出的一种串行总线 2. 具备多主机系统(可以外挂很多器件:如STM8,收音机等),具有总线裁决和高低速器件同步功能的高性能串口总线 3. I2C总线只有两根双向信号线:数据线SDA(Serial Data),时钟线SCL(Serial Clock) 4. I2C总线相当于公路主干道,外挂器件相当于交通工具,只要遵守协议就可以跑数据 5. I2C适合板载芯片之间的通讯,不适合远距离通讯 I2C总线协议 I2C总线通过上拉电阻(2.2K)接正电源。当总线空闲时,SDA和SCL都是高电平,连接到总线上任一器件输出低电平,那么总线信号遍低,即各器件与SDA和SCL都是“与”关系
[单片机]
【众拳<font color='red'>STM8</font> 46 讲】I2C 串形总线工作原理
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved