概述
一、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语言数据类型
图片素材来源:https://www.cnblogs.com/ricksteves/p/9899893.html
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 模拟输入/输出模式
进制转换表
最后
以上就是淡淡信封为你收集整理的stm32阶段总结录 一、C语言之预处理三、结构体与联合体四、C语言数据类型六、stm32时钟进制转换表的全部内容,希望文章能够帮你解决stm32阶段总结录 一、C语言之预处理三、结构体与联合体四、C语言数据类型六、stm32时钟进制转换表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复