就好比stm32这款单片机,他们的固件库大量用了指针、结构体和枚举。 这个时候即便你没学过stm32,但是你熟练c语言的指针、结构体、枚举这些,你大概都能看懂他们固件库的底层逻辑。 如果你不熟c语言这些知识,或者找不到好的实用的教程,可以去看我的视频教程,我对这3个知识点有专门的讲解。 如果你嫌看视频太浪费时...
#ifndef PLL_Q //意思就是如果没有定义这个标识符 4 extern变量申明 C 语言中 extern 可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义(一个变量只能定义一次,而extern可以申明很多次)使用例子如下: extern u16 USART_RX_STA; 上面例子意思就是...
浅谈C语言内存分区和STM32存储器分配 一、C语言内存分区 C语言内存分区示意图如下: 1. 栈区 栈区介绍 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。 栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。 栈区按内存地址由高到低方向生长,其最大大小由编译时确定,速度快,...
GPIOx = GPIOC_BASE; //把指针地址设置为宏 GPIOC_BASE 地址 GPIOx->BSRR =(1<<(16+0)); //通过指针访问并修改 GPIOC_BSRR 寄存器 这段代码先用GPIO_TypeDef类型定义一个结构体指针GPIOx,并让指针指向GPIOC基地址GPIOC_BASE,地址确定下来,然后根据C语言访问结构体的内容,用GPIOx->BSRR写寄存器。为了...
自定时写入周期(5毫秒~10毫秒),因为内部有页缓冲区,向AT24C0x写入数据之后,还需要等待AT24C0x将缓冲区数据写入到内部EEPROM区域. 数据保存可达100年 100万次擦写周期 高数据传送速率为400KHz、低速100KHZ和IIC总线兼容。 100 kHz(1.8V)和400 kHz(2.7V、5V) 8字节页写缓冲区 这个缓冲区大小与芯片具体型号有关...
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。 C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取...
系统以ARM Cortex-M3核的STM32F103VB微控制器结合?滋C/OS-Ⅲ操作系统,由STR-18无线数传模块构建组网,具有位于两侧的方便就餐者点餐的双触摸屏,上位机由Visual Studio工具开发,上下位机无线通信方便了顾客的菜单传送到上位机和修改菜单,如此减少了服务人员、节约成本、提高了运作效率。
STM32CubeIDE是一种高级C/C++开发平台,具有STM32微控制器和微处理器的外设配置、代码生成、代码编译和调试功能。它基于Eclipse®/CDT™框架和用于开发的GCC工具链,以及用于调试的GDB。它支持集成数以百计的现有插件,正是这些插件使Eclipse® IDE的功能趋于完整。 STM32CubeIDE集成了STM32CubeMX的STM32配置与项...
使用gcc -MM main.c 9. := 与 += 区别 := --> 立即展开 += --> 立即展开或延迟展开 对于所有条件语句均采用立即展开 10. 将make输出的错误信息输出到文件1.txt make 2>1.txt 11. 从Shell获得当前文件夹位置 ROOT=$(shell pwd) 12. 包含依赖文件时,不要放在所有目标的前面,如下所示 ...