一、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 模拟输入/输出模式
进制转换表
上一篇:STM32带位操作
下一篇:stm32库函数记录
推荐阅读最新更新时间:2024-11-09 12:02