#ifndef PLL_Q //意思就是如果没有定义这个标识符 4 extern变量申明 C 语言中 extern 可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义(一个变量只能定义一次,而extern可以申明很多次)使用例子如下: extern u16 USART_RX_STA; 上面例子意思就是...
通常,基于STM32C071的图显系统成本包括一个没有触摸功能的2.4 TFT显示器、STM32C071、4MB外部闪存,采用2层PCB设计,BOM成本大约5美元。这样的BOM成本和芯片性能让更多的嵌入式系统用得起GUI,比如很多用按键或数码管显示的小家电,可以升级为图显系统,突出产品优势。以电饭煲UI为例,基于TouchGFX 软件工具开发...
浅谈C语言内存分区和STM32存储器分配 描述 一、C语言内存分区 C语言内存分区示意图如下: 1. 栈区 栈区介绍 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。 栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。 栈区按内存地址由高到低方向生长,其最大大小由编译时确定,速...
定义:#define A 123 使用:int a = A ;等效于int a = 123; 这个和C语言是类似的,就不过多讲解了。 typedef 关键字: typedef 用途:对变量类型换名,便于使用 定义:typedef unsigned char uint8_t; 使用:uint8_t a ;相当于 unsigned char a; 结构体 关键字:struct 用途:数据打包,不同类型变量的集合 ...
在C语言中,变量是用于存储数据的容器,数据类型决定了变量可以存储的数据类型和范围。在STM32编程中,常用的数据类型有整型(如int、short、char等)、浮点型(如float、double等)、字符型(如char)等。了解不同数据类型的特性有助于您编写高效的代码。 **2. 运算符和表达式** ...
关键字为c语言中的应用,表示的范围根据使用的范围不同,也发生了相应的变化,比如char本来是用来表示字符的,现在也可以用来表述数字;int在c中是16位的,在32中表示32位,long和int的长度相同,longlong基本不使用。 stdint关键字的库文件给我们提供的,ST文件是以前的库文件用的命名方式,现在同样兼容 ...
条件编译在HAL库里面是用得很多,在stm32mp1xx_hal_conf.h这个头文件中经常会看到这样的语句: #if!defined (HSE_VALUE) #defineHSE_VALUE 24000000U #endif 如果没有定义HSE_VALUE这个宏,则定义HSE_VALUE宏,并且HSE_VALUE的值为24000000U。条件编译也是C语言的基础知识...
定义变量时,要遵循 C 语言的语法规则。例如:char myChar = 'A';int myInt = 10;float myFloat = 3.14f;这里定义了一个字符变量 myChar 并初始化为字符 'A',一个整型变量 myInt 初始化为 10,一个浮点型变量 myFloat 初始化为 3.14。需要注意的是,在 STM32 中,变量的定义要考虑内存的使用情况...
就好比stm32这款单片机,他们的固件库大量用了指针、结构体和枚举。 这个时候即便你没学过stm32,但是你熟练c语言的指针、结构体、枚举这些,你大概都能看懂他们固件库的底层逻辑。 最后我建议,新手先用51单片机做几个小项目,把c语言练熟以后再去学习stm32。
本教程使用VScode作为代码编辑工具、使用Cmake作为构建系统生成器、Make进行构建系统、使用arm-none-eabi-gcc进行交叉编译、使用OpenOCD作为代码下载与调试工具,最终搭建出适用于ARM架构系列芯片的开发环境。此教程以STM32F103ZET6芯片为例,演示LED灯闪烁的项目。