就好比stm32这款单片机,他们的固件库大量用了指针、结构体和枚举。 这个时候即便你没学过stm32,但是你熟练c语言的指针、结构体、枚举这些,你大概都能看懂他们固件库的底层逻辑。 如果你不熟c语言这些知识,或者找不到好的实用的教程,可以去看我的视频教程,我对这3个知识点有专门的讲解。 如果你嫌看视频太浪费时间,也可以找无际单
#ifndef PLL_Q //意思就是如果没有定义这个标识符 4 extern变量申明 C 语言中 extern 可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义(一个变量只能定义一次,而extern可以申明很多次)使用例子如下: extern u16 USART_RX_STA; 上面例子意思就是...
2.3 μC/OS-Ⅲ操作系统在本系统中的应用 μC/OS-Ⅲ是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核[5],适合于如STM32F103VBT6这种没有MMU的CPU。下位机的点菜界面如图4所示[9],左边是菜单,分页显示,顾客选择一道菜时,通过μC/OS-Ⅲ发送信号量,此时等待该信号量的任务首先完成在本屏上使该道菜...
浅谈C语言内存分区和STM32存储器分配 一、C语言内存分区 C语言内存分区示意图如下: 1. 栈区 栈区介绍 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。 栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。 栈区按内存地址由高到低方向生长,其最大大小由编译时确定,速度快,...
前面文章介绍了存储器映射、寄存器和寄存器映射,这些都是为了介绍使用 C语言封装寄存器做铺垫。这里我们通过一个实例来对 C 语言封装寄存器进行介绍。 具体实例:控制 GPIOC 端口的第 0 管脚输出一个低电平。首先我们需要知道GPIOC 端口外设是挂接在哪个总线上的,然后根据
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。 C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取...
使用gcc -MM main.c 9. := 与 += 区别 := --> 立即展开 += --> 立即展开或延迟展开 对于所有条件语句均采用立即展开 10. 将make输出的错误信息输出到文件1.txt make 2>1.txt 11. 从Shell获得当前文件夹位置 ROOT=$(shell pwd) 12. 包含依赖文件时,不要放在所有目标的前面,如下所示 ...
1char* Status_to_cJSON(char* cJSONROOM, ROBOStatus_TypeDef status)//传入一个变量的指针,这里cJSONROOM是一个全局变量(一个提前规定大小的字符数组),用来存放转换之后的JSON字符串23{45char*result;67cJSON *root,*subroot;//新建两个cJSON的对象指针89root=cJSON_CreateObject();//创建一个机器人状态的...
1.首先三个点 "..." 在C语言中代表“参数个数可变的参数”,我们可以看一下printf()函数的原型: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 intprintf(constchar*format,...);//printf()函数声明原型//使用printf函数的方法int num1;printf("num1 = %d \r\n",num1);//一个参数时,参数是整...
相关专栏: 串口传输,通信协议1、I²C简介 I²C(芯片间)总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I²C总线特定的 时序、协议、仲裁和定时。支持标准和快速两种模式,同时与SMBus 2.0兼容。…