历史上的今天
返回首页

历史上的今天

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

正在发生

2021年11月08日 | stm32阶段总结录

2021-11-08 来源:eefocus

一、C语言之预处理

预处理有三种:宏定义、条件编译、文件包含。


1.1、宏定义

#define EXT extern // 用EXT代替extern关键字


1.2、文件包含

#include “stm32f10x.h”


1.3、条件编译

防止同一个头文件被不同的文件多次包含,编译时所有文件编译成一个可执行文件有大量命名冲突。


#ifndef <标识符>   //if not defined

#define <标识符>

代码段落

#endif

 

#ifndef  _public_h  

#define  _public_h

#include "public.h"

#endif

#空指令,无任何效果

#include包含一个源代码文件

#define定义宏

#undef取消已定义的宏

#if如果给定条件为真,则编译下面代码

#ifdef如果宏已经定义,则编译下面代码

#ifndef如果宏没有定义,则编译下面代码

#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码

#endif结束一个#if……#else条件编译块

#error停止编译并显示错误信息


1.4、C语言中的宏机制

c程序编译分过程分为三个步骤:(1)预处理;(2)编译;(3)链接。在预处理阶段,编译器中的预处理器会将定义的宏展开,即 原封不动的替换宏的定义,只是在处理文本。


二、typedef enum{};与enum{};

typedef 为C语言的关键字,释义:为各种数据类型定义一个新名字(别名)。


2.1、枚举类型的声明

enum [枚举名] {枚举元素列表};


typedef enum [枚举名] {枚举元素列表};


typedef enum{FALSE=0,TURE=1}bool; // bool为此枚举类型的变量,它的值只能是由FALSE与TURE赋予。

typedef enum{FALSE=0,TURE=!FALSE}bool;// FALSE与TURE不能是小写,小写是C语言的保留字。


三、结构体与联合体

结构体和联合体用于描述事物的属性,如一只鸟的信息,可能包括它的品种,体重,颜色,年龄等。


用户根据自己的需求构造的数据类型,但必须“先定义,后使用”。


用户必须先构造一个结构体类型,然后才能使用这个结构体类型来定义变量或数组。

struct 结构体名称{}结构体别名;


/*定义一个结构体sbit,取别名Bit,表示8个位域结构

unsigned bit0为位段名 1为位的个数*/

typedef struct  sbit

unsigned bit0 : 1; 

unsigned bit1 : 1; 

unsigned bit2 : 1; 

unsigned bit3 : 1; 

unsigned bit4 : 1; 

unsigned bit5 : 1; 

unsigned bit6 : 1; 

unsigned bit7 : 1;

}Bit; 


四、C语言数据类型

unsigned无符号整型, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范围:0 ~ 2^32。看起来unsigned 是个不错的类型,尤其是用在自增或者没有负数的情况。但是在实际使用中会出现一些意外的情况。


signed在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据。


五、stm32中的数据类型

typedef unsigned short   int uint16_t


参考:https://www.cnblogs.com/wangh0802PositiveANDupward/archive/2013/01/01/2841697.html


在STM32编程中,常用的数据类型有:char(字符型),u8,u16 ,u32,但是在一些计算中,涉及到负数,小数,因此要用到:int   float doulbe 型。

其中u8——1个字节,无符号型(不能表达负数,如果用来当作负数的话,就出错了);

     u16 ——2个字节,无符号型(参看前边STM32f10x.h中的定义);

     u32——4个字节,无符号型;

    int——4个字节,有符号型,可以表达负整数;

    float ——4个字节,有符号型,可以表达负数/小数;

   double——8个字节,有符号弄,可以表达负数/小数;


六、stm32时钟

HCLK:送给AHB总线、内核、内存和DMA使用的HCLK时钟。

HSI:高速内部时钟

FLITFCLK:到Flash编程接口

LSE:低速外部时钟

HSE:高速外部时钟

FCLK:直接送给Cortex的自由运行时钟(free running clock)FCLK

 、

GPIO_Mode_IN = 0x00        // GPIO Input Mode                        输入模式

GPIO_Mode_OUT = 0x01   //  GPIO Out Mode                          输出模式

GPIO_Mode_AF = 0x02      // GPIO Alternate Function Mode   复用模式

GPIO_Mode_AN= 0x03      // GPIO Analog In/Out Mode            模拟输入/输出模式


进制转换表

推荐阅读

史海拾趣

Elpida Memory公司的发展小趣事

为了挽救Elpida Memory,日本政府采取了积极的援助措施。2009年,日本政府通过《产业再生法》修正案,向Elpida Memory提供了数百亿日元的公共资金和融资支持。这些资金帮助Elpida Memory度过了最困难的时期,并为其后续的重组和发展提供了有力的支持。

Galaxy ( Bel )公司的发展小趣事

为了挽救Elpida Memory,日本政府采取了积极的援助措施。2009年,日本政府通过《产业再生法》修正案,向Elpida Memory提供了数百亿日元的公共资金和融资支持。这些资金帮助Elpida Memory度过了最困难的时期,并为其后续的重组和发展提供了有力的支持。

富瀚(Fullhan)公司的发展小趣事
设计紧凑合理,安装简便快捷;同时提供清晰的故障指示和便捷的维护接口,方便用户进行日常维护和故障排除。
Ampire Co Ltd公司的发展小趣事
确保电动机保护器已正确安装并连接到电动机上,同时准备好测试用的负载设备(如电阻箱或可调负载器)。
Allegro公司的发展小趣事
确保保护器的电源供应正常,无电压波动或断电现象。
Holt Integrated Circuits公司的发展小趣事

Holt在支持ARINC 429标准方面展现出了强大的实力。其ARINC 429 IC产品系列从简单的线路接收器到集成RAM的完整协议解决方案,覆盖了业内最广泛的范围。这些产品设计精巧,能够在单个3.3V电源上运行,显著降低了系统复杂性和板空间,为航空电子系统带来了更高的效率和可靠性。Holt的这一系列创新产品,不仅满足了航空制造商的严格需求,也推动了ARINC 429标准在全球范围内的广泛应用。

问答坊 | AI 解惑

六十大庆,散分!

普天同庆!哈哈...... 祝坛子里的兄弟姐妹们节日快乐!…

查看全部问答>

====招聘硬件工程师===

硬件工程师 职位要求: 1、电子工程专业背景。 2、能熟练使用PROTEL99、CADENCE等工具设计线路图、线路板,有能力通过合理布线消除各电路之间的各种干扰(如地线噪音干扰、模拟与数字电路相互干扰、高频电磁干扰等) 3、要求有足够模拟及数字电 ...…

查看全部问答>

fpga就业前景

请问搞FPGA将来就业前景怎样,本人初学者,请大家指教~~…

查看全部问答>

WinCE 6.0下DirectDraw Sample运行出错,Why?

运行目录public\\directx\\sdk\\samples\\ddraw\\src\\DDex1的程序,结果Display driver doesn\'t support flipping surfaces,提示GWES Hook fails surface creation. IDirectDraw::CreateSurface fails.why? VS2005,OS Design时direct的已经选 ...…

查看全部问答>

811的板子 GPIO怎么设置才可以既当做输入又可以当做输出

GPIO怎么设置才可以既当做输入又可以当做输出? 我的PB口在写给芯片数据的时候需要时输出模式,读芯片数据的时候需要输入模式,请问怎么设置才能这样使用呢。 [ 本帖最后由 jinghong21 于 2011-8-28 12:32 编辑 ]…

查看全部问答>

EK-LM3S811_ND Rev3 开发板上的作为仿真器的芯片发热严重

刚收到的EK-LM3S811_ND 开发板插上电,仿真器的那颗芯片发热,大家的开发板有没有这种现象.....??…

查看全部问答>

求程控放大器(增益)设计方案!

本帖最后由 dontium 于 2015-1-23 12:59 编辑 参数可以自己选择, 器件最好TI的 我主要是想学习原理,各种资料也行,先谢谢啦 …

查看全部问答>

都有哪些无限定位系统呀!

我就知道有cc2431可以实现场强定位,有没有别的原理的定位方式呀!!求详解!!…

查看全部问答>

altium不能调用集成库中的封装

altium不能调用集成库中的封装了,不知道怎么回事。 比如我在院里图中放置一个电阻,现在想更换该电阻的封装 我记得原来只用在封装的选项里面点浏览, 然后更换封装就好了。 但是现在不行,集成库已经添加,但是在可用的封装里面没有显示。 ...…

查看全部问答>

AD9更改已定pcb板尺寸

   更改形状按以下步骤:“设计”--->\"板子形状\"--->\"重新定义PCB外形\" ,然后就可以重新定义外形了。    建议在重定义PCB外形前,先在\"KEEPOUT层\"(禁止布线层)上先用直线把大概轮廓画出来,也包括固定孔。如果想精确定位pcb的外 ...…

查看全部问答>