【STM32】C语言基础补充

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

目录

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位的数据类型存储,否则移位将丢失数据。
  • 示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/872072.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车冷却液温度传感器

1、冷却液温度传感器的功能 发动机冷却液温度传感器&#xff0c;也称为ECT&#xff0c;是帮助保护发动机&#xff0c;提高发动机工作效率以及帮助发动机稳定运行的非常重要的传感器之一。 发动机冷却液温度 &#xff08;ECT&#xff09; 传感器用于测量发动机的冷却液温度&…

Vue项目创建和使用

快速上手 | Vue.js (vuejs.org) nodejs.org/ vue项目实质上是index.html页面和多个js文件的集合&#xff0c;最终解析后的html和js代码可以由浏览器解析运行&#xff1a; vue项目的创建&#xff0c;需要脚手架工具来搭建&#xff1b; 在编译的源码阶段&#xff0c;文件格式为.…

集团数字化转型方案(十二)

集团数字化转型方案致力于通过构建一个集成化的数字平台&#xff0c;全面应用大数据分析、人工智能、云计算和物联网等前沿技术&#xff0c;推动业务流程、管理模式和决策机制的全面升级。该方案将从业务流程的数字化改造开始&#xff0c;优化资源配置&#xff0c;提升运营效率…

MySQL的源码安装及基本部署(基于RHEL7.9)

这里源码安装mysql的5.7.44版本 一、源码安装 1.下载并解压mysql , 进入目录: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz tar xf mysql-boost-5.7.44.tar.gz cd mysql-5.7.44/ 2.准备好mysql编译安装依赖: yum install cmake g…

牛客网习题——通过C++实现

一、目标 实现下面4道练习题增强C代码能力。 1.求123...n_牛客题霸_牛客网 (nowcoder.com) 2.计算日期到天数转换_牛客题霸_牛客网 (nowcoder.com) 3.日期差值_牛客题霸_牛客网 (nowcoder.com) 4.打印日期_牛客题霸_牛客网 (nowcoder.com) 二、对目标的实现 1.求123...n_…

杰发科技AC7840——CAN通信简介(8)_通过波特率和时钟计算SEG_1/SEG_2/SJW/PRESC

通过公式计算 * 波特率和采样点计算公式&#xff1a;* tSeg1 (S_SEG_1 2); tSeg2 (S_SEG_2 1).* BandRate (SCR_CLK / (S_PRESC 1) / ((S_SEG_1 2) (S_SEG_2 1))), SCR_CLK 为CAN 模块源时钟* SamplePoint (tSeg1 / (tSeg1 tSeg2)). {0x0D, 0x04, 0x04, 0x3B},…

[创业之路-140] :生产 - 生产流程概述

目录 前言&#xff1a; 一、生产流程的基本框架 二、生产流程的关键要素 前言&#xff1a; 生产流程是一个广泛的概念&#xff0c;它涵盖了从原材料投入到成品产出的全过程。 这个过程在不同行业和领域中有所不同&#xff0c;但通常都包括一系列有序的步骤和环节。 以下是…

WIN 10 添加右键菜单(VSCode 打开当前目录)

WIN 10 添加右键菜单&#xff08;VSCode 打开当前目录&#xff09; 前言最终效果操作步骤 前言 每次打开代码都需要先打开 VSCode&#xff0c;再选择最近打开的项目或者浏览打开项目&#xff0c;感觉比较难找。所以自己添加了右键命令。 最终效果 操作步骤 cmd 打开注册表 找…

C语言程序设计(初识C语言后部分)

十七&#xff0c;数组 1.一维数组的创建和初始化 1&#xff09;数组的创建 数组是一组相同类型元素的集合 数组的创建方式&#xff1a; type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式&#xff0c;用来指定数组大小 …

R语言统计分析——回归分析的改进措施

参考资料&#xff1a;R语言实战【第2版】 如果在回归诊断中发现了问题&#xff0c;我们该如何做&#xff1f;有四种方法可以处理违背回归假设的问题&#xff1a; ①删除观测点&#xff1b; ②变量变换&#xff1b; ③添加或删除变量&#xff1b; ④使用其他回归方法。 1、…

C语言 ——— 常见的动态内存错误(下篇)

目录 使用free释放一块动态开辟内存的一部分 对同一块动态内存多次释放 动态开辟内存忘记释放&#xff08;内存泄漏&#xff09; 使用free释放一块动态开辟内存的一部分 代码演示&#xff1a; // 动态开辟10个整型空间 int* p (int*)malloc(sizeof(int) * 10);// 判断是…

Pod基础使用

POD基本操作 1.Pod生命周期 在Kubernetes中&#xff0c;Pod的生命周期经历了几个重要的阶段。下面是Pod生命周期的详细介绍&#xff1a; Pending&#xff08;待处理&#xff09;: 调度: Pod被创建后&#xff0c;首先进入“Pending”状态。此时&#xff0c;Kubernetes的调度器…

机器视觉运动控制一体机VPLC532E在汽车胶带缠绕的开放式CNC应用

市场应用背景 在汽车线束和零配件中&#xff0c;胶带缠绕是一种常见且重要的加工工艺&#xff0c;主要用于线束/零配件的捆扎、固定、绝缘保护等应用。在缠绕头控制下&#xff0c;胶带均匀缠绕在汽车线束/零配件表面&#xff0c;完成缠绕后&#xff0c;系统自动执行切割。汽车…

【CSS】使用 CSS 自定义属性(变量)-- var()

自定义属性&#xff08;有时候也被称作CSS 变量或者级联变量&#xff09;是由 CSS 作者定义的&#xff0c;它包含的值可以在整个文档中重复使用。由自定义属性标记设定值&#xff08;比如&#xff1a; --main-color: black;&#xff09;&#xff0c;由 var() 函数来获取值&…

qtsql连接达梦数据库

odbc window和linux都有odbc的中间件&#xff0c;可以通过odbc中间件配合qtsql连接数据库 windows下配置odbc linux配置odbc apt install unixodbc unixodbc-dev /etc/odbcinst.ini配置 [DM8 ODBC DRIVER] DescriptionDM8 ODBC Driver DRIVER/opt/dmdbms/bin/libdodbc.so/et…

安装打印机提示“打印后台程序服务没有启动”的解决方法

1、在桌面选中“我的电脑”&#xff0c;鼠标右键选择“管理”&#xff1b; 2、在“管理”窗口中&#xff0c;选取“服务和应用程序”扩展项目下的“服务”选项&#xff08;如图&#xff09;&#xff0c;在右侧出现系统服务列表中找到“Print Spooler”服务&#xff0c;双击进入…

JavaWeb基础 -- Servlet

JavaWeb基础 – Servlet 1.Servlet简介 1.1 Servlet是什么 Servlet本身是用Java编写的&#xff0c;运行在Web服务器上的应用程序&#xff0c;并作为Web浏览器和其他HTTP客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。Servlet可以收集来自网页表单输入的数据…

ARM 裸机与 Linux 驱动对比及 Linux 内核入门

目录 ARM裸机代码和驱动的区别 Linux系统组成 内核五大功能 设备驱动分类 内核类型 驱动模块 驱动模块示例 Makefile配置 命令 编码辅助工具 内核中的打印函数 printk 函数 修改打印级别 ​编辑 打印级别含义 驱动多文件编译 示例 模块传递参数 命令行传递参数…

【机器学习】经典CNN架构

第一章:引言 1.1 研究背景 机器学习的发展历程 机器学习作为人工智能的重要分支,其发展历程可以追溯到20世纪50年代。初期的机器学习研究主要集中在规则系统和基本的统计学习方法上。随着计算能力的提升和数据的积累,机器学习逐渐发展出更为复杂的算法和模型。20世纪80年…

7.添加购物车以及完善导航条跳转

添加购物车 一、引言二、前端2.1引入轻组件2.2为图片添加点击事件2.3创建addShoppingCart函数 三、后端四、运行效果五、导航条跳转 一、引言 在前几篇文章中&#xff0c;我们一步一步慢慢的实现了项目的建立&#xff0c;从数据库获取数据显示在页面&#xff0c;商品大图查看&…