当前位置: 首页 > article >正文

【STM32】C语言基础补充

学习过程中发现自己好些需要用到的C语言语法、特征都不太熟练了,特意记录一下,免得忘记了,以后遇到了新的也会继续更新······

专栏目录:记录自己的嵌入式学习之路-CSDN博客


目录

1    全局变量

2    结构体

3    静态变量

4    memset()函数

5    使用8位的存储器存16位的数


1    全局变量

这里指的全局变量,即可在另一.c文件中使用的变量,例如在某BSPxx.c中定义了全局变量flag,但在main.c中也需要用到这个变量,这时就需要将变量声明为外部变量了。
做法:在BSPxx.h中声明该变量为extern变量,如:

extern uint_8t flag;

2    结构体

定义一个结构体时,最好给他一个初始化的值{0},否则其结构体变量可能会出现随机的数。

3    静态变量

静态变量的定义在程序中只会被执行一次,哪怕程序多次调用其定义语句(例如其定义语句处于函数中时)。可用于实现一些状态变量的记忆。如下图为按键标志的记忆。

4    memset()函数

用于初始化变量,万能。所有变量都适用,直接对内存进行操作,因此更加快速。

  • 使用方式:
    void *memset(void *s, int c, unsigned long n);
  • 功能:
    将指针变量s所指向的前n字节的内存单元用一个“整数”c替换,注意c是int型。s是void*型的指针变量,所以它可以为任何类型的数据进行初始化。
  • 需要
    导入string头文件# include <string.h>。

5    使用8位的存储器存16位的数

  • 思路:
    将16位的高8位和低8位分别存在两个数中,在支持16位的程序中对高8位的数据进行左移8位,并将其与低8位的数据进行或操作。
  • 注意!
    8位的数据读到支持16位的程序中时需使用16位的数据类型存储,否则移位将丢失数据。
  • 示例


http://www.kler.cn/a/280696.html

相关文章:

  • 第十三章- 游戏结束
  • Qt WebAssembly 警告:构建套件中未设置编译器
  • UE5打包iOS运行查看Crash日志
  • 【STM32开发笔记】使用RT-Thread的SDIO驱动和FATFS实现SD卡文件读写
  • 如何用JavaWeb技术开发旅行社网站系统?详解步骤与技巧
  • python 把一个视频复制3次
  • pinctrl_GPIO子系统
  • Java 开发中常用的Linux 性能调优技巧
  • WEB开发---使用HTML CSS开发网页实时显示当前日期和时间
  • linux dma cache和主存数据不一致问题
  • 嵌入式Qt移植之tslib部署到Busybox根文件-思维导图-学习笔记-基于正点原子阿尔法开发板
  • 畅捷通CRM newleadset.php SQL注入漏洞复现
  • Mybatis Plus乐观锁实现
  • 测试用例(还需要输入1个字)
  • 使用 Java 记录简化 Spring Data 中的数据实体
  • AD7606芯片驱动-FPGA实现
  • 贪心算法---分发糖果
  • JUC-Synchronized原理进阶
  • 基于SSM+微信小程序的跑腿平台管理系统(跑腿3)(源码+sql脚本+视频导入教程+文档)
  • 【微信小程序】残存良知之开启npm支持