我是靠谱客的博主 淡淡信封,最近开发中收集的这篇文章主要介绍stm32阶段总结录 一、C语言之预处理三、结构体与联合体四、C语言数据类型六、stm32时钟进制转换表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

一、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
  1. #空指令,无任何效果
  2. #include包含一个源代码文件
  3. #define定义宏
  4. #undef取消已定义的宏
  5. #if如果给定条件为真,则编译下面代码
  6. #ifdef如果宏已经定义,则编译下面代码
  7. #ifndef如果宏没有定义,则编译下面代码
  8. #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
  9. #endif结束一个#if……#else条件编译块
  10. #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时钟进制转换表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部