STM32之C语言基础复习

您所在的位置:网站首页 c语言基本句型 STM32之C语言基础复习

STM32之C语言基础复习

2023-04-03 12:37| 来源: 网络整理| 查看: 265

目录

一、宏定义

二、条件编译

三、extern声明

四、类型别名(typedef)

1、类型别名应用

五、结构体

1、应用举例(ST源码,使用类型别名)

六、指针

1、指针使用的二大最常见问题

七、位操作 

 1、如何给寄存器某个位赋值

一、宏定义

宏定义可以:提高效率、可读性、易改性、核心是替换

1、不带参数的宏定义

#define 标识符 字符串 标识符:宏定义的名字 (建议大写) 字符串:常数、表达式、格式串等 宏定义是一个临时的符号,是不占用内存的,属于预处理程序中代码 例如:#define PI 3.14159

2、带参数的宏定义

#define LED1(X) do{ x?\ A:\ B;\ }while(0)

建议使用do{.....}while(0)来构造宏定义,这样不会受到大括号、分号、运算符优先级等的影响

二、条件编译

让编译器只对满足条件的代码进行编译,不满足条件的不参与编译

 举例:头文件的条件编译结构

#ifndef _LED_H #define _LED_H #include "./SYSTEM/sys/sys.h" code #endif 三、extern声明

放在函数/变量前,表示此函数/变量在其他文件定义,以便本文件引用

extern uint16_t g_usart_rx_sta; extern void delay_us(uint32_t nus); g_usart_rx_sta:一个全局变量 delay_us: 一个函数

extern的作用是:告诉编译器,在这个文件中,我要调用这个变量/函数,你需要去其他的文件中找到这个变量/函数

四、类型别名(typedef)

为现有数据类型创建一个新的名字,或称为类型别名,用来简化变量的定义

typedef   现有类型    新名字

typedef unsigned char uint8_t; typedef unsigned int uint16_t; 1、类型别名应用

(1)定义一个结构体

Struct GPIO_TypeDef //定义一个结构体的类型 { _IO uint32_t CRL; _IO uint32_t CRH; ... }; Struct GPIO_TypeDef gpiox //定义一个结构体的变量名

 (2)用类型别名定义一个结构体

typedef struct //定义一个结构体的类型 { _IO uint32_t CRL; _IO uint32_t CRH; ... }GPIO_TypeDef; GPIO_TypeDef gpiox //定义一个结构体的变量名 五、结构体

由若干基本数据类型集合组成的一种自定义数据类型,也叫聚合类型

struct 结构体名 { 成员列表; }变量名列表(可选); struct student { char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在的学习小组 float score; //成绩 }stu1,stu2; stu1.name = "张三"; stu1.num = 1; stu1.age = 18; stu1.group = 'A'; stu1.score = 80.9; 1、应用举例(ST源码,使用类型别名) typedef struct { uint32_t Pin; //引脚号 uint32_t Mode; //工作模式 uint32_t Pull; //上下拉 uint32_t Speed; //IO速度 }GPIO_InitTypeDef; //类型别名 六、指针

指针就是内存的地址

指针变量是保存了指针的变量

类型名  * 指针变量名

char *p_str = "This is a test!"; ----->指向字符串的首地址,也就是"T" *p_str: 取p_str变量的值 ----->结果应为"T" &p_str: 取p_str变量的地址 ----->应是p_str变量自身的地址

举例说明:左侧各数值均得多少

 结果:

*p_buf     = 1

p_buf[0]  = 1

p_buf[1]  = 3

*p_buf++  指的是递增

*p_buf    = 3

p_buf[0] = 3

1、指针使用的二大最常见问题

(1)未分配(申请)内存就用

(2)越界使用

七、位操作 

 1、如何给寄存器某个位赋值



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3