- 博客(114)
- 收藏
- 关注
原创 C++学习之路第五章——注释与数据类型
long int 8 个字节,int 都是 4 个字节,早期的 C 编译器定义了 long int 占用 4 个字节,int 占用 2 个字节,新版的 C/C++ 标准兼容了早期的这一设定。默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。在 // 注释内,/* 和 */ 字符也没有特殊的含义。所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。程序的注释是解释性语句,您可以在 C++ 代码中包含注释,这将提高源代码的可读性。
2025-01-03 14:28:18
1229
1
原创 C++学习之路第四章之C++基本语法
如果希望在源程序中有两个连续的问号,且不希望被预处理器替换,这种情况出现在字符常量、字符串字面值或者是程序注释中,可选办法是用字符串的自动连接:"...?空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。以前为了表示键盘上没有的字符,这是必不可少的一种方法。三字符组就是用于表示另一个字符的三个字符序列,又称为三字符序列。
2025-01-03 14:14:36
865
原创 rt-thread学习之路第一百零二章——连接中移OneNet云
组件包是 RT-Thread 系统针对 OneNET 平台连接的适配,通过这个组件包可以让设备在 RT-Thread 上使用 MQTT 协议连接 OneNet 平台,完成数据的接受和发送、以及设备的控制等功能,更多 OneNET 平台信息可查看。此设备的相关信息就都显示出来了,比如:设备 ID、鉴权信息、设备 APIkey,这些信息需要记下,在ENV配置时会用到。接入设备之后,可以看到设备管理的界面多了一个设备,设备的右边有一些操作设备的按钮,点击查看详情按钮。产品创建成功之后,可以在开发者中心左侧。
2024-12-23 16:00:30
1356
2
原创 C++学习之路第三章之C++AI编程助手
今天为大家推荐一款适配了 Viusal Studio(本文使用),VS Code(本文使用),JetBrains系列以及Vim等多种编译器环境的插件 Fitten Code,Fitten Code 是由非十大模型驱动的 AI 编程助手,它可以自动生成代码,提升开发效率,帮您调试 Bug,节省您的时间,另外还可以对话聊天,解决您编程碰到的问题。然后在输入框中输入需求即可完成转换。(1)选中需要进行翻译的代码段,右键选择"Fitten Code – 重构选择代码",然后在输入框中输入需求即可完成转换。
2024-12-19 17:30:25
1295
3
原创 C++学习之路第一章之C++概况
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++ 被认为是一种语言,它综合了高级语言和低级语言的特点。C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++。C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。
2024-12-19 16:36:51
949
原创 rt-thread学习之路第一百零一章——http实现示例
HTTP 协议是互联网上应用最为广泛的一种网络协议,越来越多的应用程序需要直接通过 HTTP 协议来访问网络资源。webclient 是 RT-Thread 上实现的一个 HTTP 客户端,用来提供高效且功能丰富的 HTTP 客户端编程工具包。* 此程序仅为 http client 的示例程序,其中获取天气的 API 已经被弃用,实际使用时更换为其他的 API 才可获取最新的天气。因为服务器返回的天气信息是 JSON 格式的,所以我们用了一个用 C 语言实现的 JSON 解析库。终端会打印出一些天气信息。
2024-12-19 15:48:52
654
原创 rt-thread学习之路第一百章——MQTT实现
MQTT 协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于 TCP/IP 协议上,由 IBM 在 1999 年发布。注:* 如用 QEMU 模拟器平台需要连接外网,如出现连接失败的情况,可以尝试关闭防火墙 * 如果使用 MQTT TLS 加密连接,MQTT 线程栈至少需要 6144 字节。
2024-12-19 15:45:28
1083
原创 rt-thread学习之路第九十九章——socket编程之select非阻塞编程
在 RT-Thread 使用 socket 网络编程时,由于 socket 的 recv 和 send 的实现是阻塞式的,因此当一个任务调用 recv() 函数接收数据时,如果 socket 上并没有接收到数据,这个任务将阻塞在 recv() 函数里。在要求网络传输的同时,还能处理其他的数据的场景下,就需要用到 select 了,select 能够同时监视多个非阻塞 socket 的多个事件,这对于以上问题的解决有着重要的意义。然后,在系统运行起来后,在 msh 命令行下输入下面的命令即可让示例代码运行。
2024-12-19 15:12:52
544
1
原创 rt-thread学习之路第九十八章——UDP服务器实现
UDP 协议是用于客户端-服务器模式的一种传输协议,如今的很多通信软件都是利用这个协议实现的,如腾讯 QQ 发送消息用的就是 UDP 协议。本教程介绍了如何利用 socket 编程来实现一个 UDP 服务器,与客户端进行通信。然后在电脑上开启一个 UDP 客户端,这里以网络调试助手为例。,可以通过 Env 配置将示例代码加入到项目中。在系统运行起来后,在 msh 命令行下输入命令。发送 exit 到服务器,即可停止服务器的运行。注:请关闭防火墙之后,再运行此例程。从服务器能接收到客户端发来的数据。
2024-12-19 14:23:53
552
原创 rt-thread学习之路第九十七章——udp客户端实现
与开发 TCP 客户端一样,我们先将 socket 编程的流程列出来,然后给出具体的实例。UDP 协议是用于客户端-服务器模式的一种传输协议,如今的很多通信软件都是利用这个协议实现的,如腾讯 QQ 发送消息用的就是 UDP 协议。这个示例代码的功能是向输入的 IP 地址发送 10 条消息,发送完毕即退出,具体的参数如下。在系统运行起来后,在 msh 命令行下输入下面的命令即可让示例代码运行。UDP 与 TCP 的不同之处是,他的通信不需要建立连接的过程。,可以通过 Env 配置将示例代码加入到项目中。
2024-12-19 14:21:00
731
原创 rt-thread学习之路第九十六章——TCP服务器侧实现
socket 编程一般采用客户端-服务器模式,即由客户进程向服务器进程发出请求,服务器进程执行请求的任务并将执行结果返回给客户进程的模式。本教程介绍了如何编写一个基于 socket 编程实现的 TCP 服务器。我们先将 socket 编程的流程列出来,然后给出具体的实例。然后在电脑上开启一个 TCP 客户端,这里以网络调试助手为例。,可以通过 Env 配置将示例代码加入到项目中。发送 exit 到服务器,即可停止服务器的运行。TCP 服务器的 socket 编程流程。从服务器能接收到客户端发来的数据。
2024-12-19 14:15:21
792
原创 教你如何在rt-thread实现TCP客户端侧编程
socket 编程一般采用客户端-服务器模式,即由客户进程向服务器进程发出请求,服务器进程执行请求的任务并将执行结果返回给客户进程的模式。本教程介绍了如何编写一个基于 socket 编程实现的 TCP 客户端。我们先将 socket 编程的流程列出来,然后给出具体的实例。在运行示例代码之前需要先在电脑上开启一个 TCP 服务器,这里以网络调试助手 IPOP 为例。然后,在系统运行起来后,在 msh 命令行下输入下面的命令即可让示例代码运行。从客户端能接收到服务端发来的数据,发送字符 'q' 即可断开连接。
2024-12-17 16:44:37
409
原创 一文揭秘Ping 的时候都干什么了?
DNS(Domain Name System,域名系统),万维网上作为域名(网址)和 IP 地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记那一串无意义的数字组成的 IP 地址。我们可以在用 wireshark 抓包的时候,用电脑 Ping 一下开发板 ,通过抓到的包和上面的图对照着看就可以弄清 Ping 的过程了。ARP协议的基本功能就是通过目标设备的 IP 地址,查询目标设备的 MAC 地址,同时,维护 ARP 高速缓冲表,以保证通信的顺利进行。的 Ping 请求。
2024-12-17 16:38:05
1251
原创 rt-thread学习之路第九十五章——qemu之文件系统
也由于这种顺序存放策略,RomFS 中每个文件的数据都能连续存放,读取过程中只需要一次寻址操作,就可以读入整块数据,因此 RomFS 中读取数据效率很高。我们可以将要存入 RomFS 中的文件数据放在 romfs.c 文件中,RT-Thread提供了制作 romfs.c 的 Python 脚本文件 mkromfs.py,根据用户需要加入到 RomFS 的文件和目录生成对应的数据结构。RomFS 是在嵌入式设备上常用的一种文件系统,具备体积小,可靠性高,读取速度快等优点,常用来作为系统初始文件系统。
2024-12-17 16:18:43
1366
原创 rt-thread学习之路第九十四章——运行和调试rtthread
如下图所示,在 VS Code 里点击调试菜单(小虫子图标),调试平台选择 Windows,然后按 F5 就可以开启 QEMU 调试模式,断点停留在 main 函数。本文主要介绍在 Windows 平台使用 VS Code 调试 qemu-vexpress-a9 BSP 工程。命令就可以运行工程。VS Code 打开后会自动打开 qemu-vexpress-a9 BSP 文件夹,如下图所示。点击 VS Code “查看 -> 终端” 打开 VS Code 内部终端,在终端里输入命令。
2024-12-17 16:14:06
1086
原创 rt-thread学习之路第九十三章——qemu环境搭建
启动虚拟机及 BSP 工程,qemu.bat 是 Window 批处理文件,此文件位于 BSP 文件夹下,主要包括 QEMU 的执行指令,第一次运行工程会在 BSP 文件夹下创建一份空白的 sd.bin 文件,这是虚拟的 sd 卡,大小为 64M。右键当前能上网的网络连接(本文使用以太网),打开属性 -> 共享,选择家庭网络连接为 tap,点击确定完成设置,如下图所示:(如果只有一个网卡的话,就不用下拉选择网卡了,只要勾选允许共享即可)可以查看注册到系统的所有设备。如下图所示,左边为命令,右边为命令描述。
2024-12-16 15:13:43
1392
3
原创 rt-thread学习之路第九十二章——qemu之BSD Socket
使用TCP/IP协议的应用程序通过在客户端和服务器各自创建一个 Socket ,然后通过操作各自的 Socket 就可以完成客户端和服务器的连接以及数据传输的任务了。TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的协议,使用该协议时,可以保证客户端和服务端的连接是可靠和安全的。注:当调用 bind 函数时,不要将端口号设为小于 1024 的值,因为 1-1024 为系统的保留端口号,我们可以选择大于 1024 的任何一个未被占用的端口号。
2024-12-16 15:09:29
1131
原创 rt-thread学习之路第九十一章——qemu之TCP/IP协议栈基础知识
基础知识之 TCP/IP 协议栈TCP/IP 参考模型基本概念应用层传输层网络层网络接口层基础知识之 TCP/IP 协议栈在这个互联网蓬勃发展的时代,网络正在迅速的改变着我们周围的一切。小到智能电灯、智能手表,大到航天飞机、宇宙空间站,这所有的一切都被互联网连接到了一起。他们之间能够相互识别,相互通信,这所有的一切都依赖于 TCP/IP 协议。TCP/IP 不是一个协议,而是一个协议族的统称。里面包括了 IP 协议,IMCP 协议,TCP 协议,以及我们更加熟悉的 http、
2024-12-16 15:02:04
902
原创 rt-thread学习之路第九十章——在studio上使用cyw43012模块wifi功能
目录基于Studio使用cyw43012模块wifi功能模块简介硬件连接运行测试基于Studio使用cyw43012模块wifi功能模块简介cyw43012 模块是由英飞凌基于 CYW43012 开发的 SDIO 高速 wifi&&蓝牙 模块。CYW43012 提供超低功耗的Wi-Fi®和蓝牙®连接,可延长可穿戴设备、智能家居产品和便携式音频应用的电池续航时间。同时,其先进的共存引擎可为2.4与5-GHz双频Wi-Fi以及双模式蓝牙/低功耗蓝牙 (BLE)5
2024-12-15 15:07:05
485
2
原创 rt-thread学习之路第八十九章——ARM-MPU
但是子 region 必须是 8 等分的,每一份是一个子 region,而且子 region 的属性和父 region 必须是相同的. 每个子 region 可以单独的除能,SRD 中每一个 bit 代表一个 region 是否被除能。所以你的基地址必须是像 0x10000, 0x20000 这样的地址才是合法的地址。比如,RTOS 中的一些特殊的变量,用户线程是不被允许访问和修改的,这个时候如果你启用了 MPU,并且保护了这些变量,那用户即使知道这里的实际的物理地址,也是不被允许访问和修改的。
2024-12-15 15:02:41
1172
原创 rt-thread学习之路第八十八章——STM32上使用USB host读写U盘
它使用差分信号来传输数据,在 USB 1.0和 USB 1.1 版本中,只支持 1.5Mb/s 的低速(low-speed)模式和 12Mb/s 的全速(full-speed)模式,在 USB 2.0 中,又加入了480Mb/s 的高速模式,USB 3.0(super speed),传输速率最大5Gbps。本文使用的是 USB Host 读写 U 盘的功能,所以需要打开 RT-Thread 的虚拟文件系统功能,打开文件系统的操作如下。开发板,给出了 USB Host 读写 U 盘的配置和使用示例。
2024-12-15 14:56:34
1882
原创 rt-thread学习之路第八十七章——STM32上使用PWM
开发板,给出了 PWM 的具体应用示例代码,由于 RT-Thread 上层应用 API 的通用性,因此这些代码不局限于具体的硬件平台,用户可以轻松将它移植到其它平台上。如果使用的 BSP 在 menuconfig 中没有给出 PWM 通道的配置项,那么就需要自己添加 PWM 的驱动,下面就如何自己添加 PWM 驱动展开讲解。本文描述了如何在搭载了 RT-Thread 操作系统的平台上使用 PWM 输出波形,包括 PWM 的应用、配置和驱动的添加等。不管通道引脚如何映射,对应的 PWM 通道是不会改变的。
2024-12-15 14:51:45
1491
原创 rt-thread学习之路第八十六章——在stm32上使用C++
全局构造函数段的结束地址,所以全局构造函数在系统初始化的时候,就会被链接到这里分配的段地址中。函数中,将全局对象的构造函数依次链接到了链接脚本文件中为其分配的段中,并且调用了。的通用性,因此这些代码不局限于具体的硬件平台,用户可以轻松将它移植到其它平台上。异常的结束地址,当异常产生的时候,就会被分配到指定的段地址中.全局对象构造函数链接后能够存放在指定的段中。全局对象构造函数所产生的目标文件就被链接到了。中对全局对象构造函数的实现中,以。全局构造函数的代码分配了段,使。全局构造函数段的起始地址,
2024-12-15 14:48:03
1491
原创 rt-thread学习之路第八十五章——wireshark抓取tls数据
在没有抓包路由器的情况下,使用方案A, 电脑创建 wifi 热点,设备端连接电脑热点,并发起 https 请求,服务器接收到请求,向设备端发出响应,设备端根据响应的内容,计算出密钥, 并将设备端随机数和密钥通过 udp 发送到 pc,保存到 sslkey.log 文件,wireshark 根据设备端随机数和密钥即可将 tls 数据包解密。需要注意的是,设备使用上述方法解密 https 的数据包,加密算法目前只能是 RSA,所以还需要强制客户端发送的加密方式(cipher suites)只能是 RSA。
2024-12-14 13:43:32
1188
原创 rt-thread学习之路第八十四章——STM32通用bootloader
本小节讲述如何使用 RT-Thread OTA 固件打包器对 app 固件进行打包,制作可以被下载到 download 分区的升级固件。进入 Bootloader 生成页面后,根据页面提示填写板卡参数,点击生成固件按钮即可在线自动生成 BootLoader,同时也会将生成的固件发送到用户邮箱中。开发者根据自己使用的芯片,填写相关参数,然后点击生成按钮,即可在线生成 Bootloader。HTTP/HTTPS 固件升级是另外一种固件下载方式,制作下载器时如果开启了系统中的网络驱动,即可使用此种方式下载固件。
2024-12-14 13:09:36
1835
原创 rt-thread学习之路第八十三章——在STM32L4上应用littlefs文件系统
开发者使用的是 DFS 框架提供的统一的 POSIX API,DFS 框架会调用 littlefs 的 API,littlefs 会使用 MTD 设备的读写接口,开发者可以使用 RT-Thread 提供的 fal 组件和 SFUD 组件来完成对 FLASH 的读写任务,也可以自己实现 MTD 设备的驱动程序,使 littlefs 可以挂载到更多的存储介质上。开发者可以自己实现一个 MTD 设备,也可以利用 RT-Thread 提供的 fal 组件,非常方便的创建出一个 MTD 设备。
2024-12-12 15:38:18
1574
2
原创 rt-thread学习之路第八十二章——CmBacktrace应用
CmBacktrace(Cortex Microcontroller Backtrace)是一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。
2024-12-12 14:30:04
1527
2
原创 rt-thread学习之路第八十一章——qemu运行动态模块组件
提供了动态加载程序模块的机制。dlmodule 组件更多的是一个 ELF 格式加载器,把单独编译的一个 elf 文件的代码段,数据段加载到内存中,并对其中的符号进行解析,绑定到内核导出的 API 地址上。请参考前面小节将此示例代码生成的动态模块文件放到文件系统里,并将生成的映像文件 sd.bin 复制到 qemu-vexpress-a9 BSP 目录。,rtthread-apps 的 lib 目录下有一个简单的动态库示例的 lib.c,源代码如下所示,它实现了 2 个简单的函数供使用。
2024-12-12 14:24:55
1218
原创 rt-thread学习之路第八十章——多线程非阻塞网络编程
在 RT-Thread 使用 socket 网络编程时,当一个任务调用 socket的 recv()函数接收数据时,如果 socket 上并没有接收到数据,这个任务将阻塞在这个 recv() 函数里。我们可以将 pipe 理解为水管,水通过水管从一端流向另一端,就像我们的数据从一个线程流向另一个线程,以此来达到线程间通信的目的。例如在上面网络客户端操作过程中,当进行 recv 操作时,如果对应的通道数据没有准备好,那系统就会让当前任务进入阻塞状态,当前任务不能再进行其他的操作。
2024-12-12 14:08:29
1051
原创 rt-thread学习之路第七十九章——AT组件连接ESP8266模块
此外,不同于传统的软件网络协议栈,AT Socket 网络功能的运行主要是在串口连接的 AT Server 设备上完成,根据不同的 AT Server 设备,可同时支持 5-6 个 socket,这样极大了降低了 AT Client 设备上 MCU 资源占用,提高 MCU 工作效率,确保数据通讯的质量和硬件的资源的合理分配。本文使用的 AT Client 示例代码演示了 AT Client 的整个使用流程,示例代码完成 STM32F4 设备 AT 命令的发送并接收和解析 ESP8266 设备的响应数据。
2024-12-12 14:04:39
1699
原创 rt-thread学习之路第七十八章——FreeMobus应用
红字部分,表示当前的错误状态,“No Connection”表示未连接状态。FreeModbus 是一款开源的 Modbus 协议栈, Modbus 是施耐德公司设计的通信协议,一般用于工控领域, 只有从机代码开源,主机源码是需要。同时网上也没有比较好的开源的 Modbus 主机协议栈,在这样的背景下,armink 大神开发了这款支持主机模式的 FreeModbus 协议栈。可以看到 Modbus Slave 与开发板上运行的主机通信成功,并且可以看到其对应的保持寄存器的寄存器 2,3 的数据被不断改变。
2024-12-12 14:00:40
1582
原创 rt-thread学习之路第七十七章——使用Ozone调试RT-Thread
文件,elf 文件中包含所有的符号和地址信息,所以调试的时候不需要源码,只需要加载 elf 文件即可,当在 elf 文件中定位到问题之后,再修改对应的源码即可。如果程序是由于异常导致的死机,那么当 Ozone 连上的时候,可以看到死机的现场(如果使用其它的 IDE 这个时候很可能会复位芯片,无法保留现场)打开 Registers 窗口,查看寄存器,这里需要注意的是,如果没有选择外设的描述文件,那么这里只能看到内核相关的寄存器,而看不到外设寄存器。的芯片为例,讲解 Ozone 的基本使用。
2024-12-11 18:30:43
1025
1
原创 rt-thread学习之路第七十六章——在潘多拉上使用 SFUD 操作 Flash
由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品所带来的风险。如下图是 SFUD 的使用流程图,首先需要移植 SFUD 组件、对 flash 进行初始化,然后再进行应用:根据名称获取 sfud_dev,对 sfud_dev 进行擦写读的操作。
2024-12-11 18:27:17
1069
原创 rt-thread学习之路第七十五章——在 STM32F429 上应用文件系统
其他 RT-Thread 支持的文件系统,移植过程也是类似的,只需要对系统进行合适的配置即可使用。函数挂载一个 SPI 设备到指定的 SPI 总线,并向内核注册 SPI 设备,并将 user_data 保存到 SPI 设备的控制块里。选项中修改关于长文件名支持的选项,否则在后面使用文件系统的过程中,创建的文件或者文件夹的名称不能超过 8 个字符。文件系统的挂载指的是将文件系统和具体的存储设备关联起来,并挂载到某个挂载点,这个挂载点即为这个文件系统的根目录。驱动程序的稳定工作是文件系统正常使用的基础。
2024-12-11 16:10:06
805
原创 rt-thread学习之路第七十四章——在 STM32F407 上应用网络功能
越来越多的单片机需要接入以太网来收发数据,市面上也有非常多的接入方案,可以用单片机加自带硬件协议栈的 PHY 芯片来接入网络,也可以单片机跑软件协议栈加 PHY 芯片来接入网络,不同的接入方案需要调用不同的 API,降低了上层应用的可移植性。并提供标准 BSD Socket API 用于开发网络应用,同时,RT-Thread 还提供了数量丰富的网络组件包,方便用户快速开发自己的应用。将 Env 生成的工程编译后下载到板子上,可以看到网口的两盏灯会亮起,一盏会闪烁,说明 PHY 已经正常初始化了。
2024-12-11 14:38:28
971
原创 rt-thread学习之路第七十三章——网络协议栈驱动移植
当以太网硬件设备收到网络报文产生中断时,接收到的数据会被存放到接收缓冲区,然后以太网中断程序会发送邮件来唤醒 erx 线程,erx 线程会按照接收到的数据长度来申请 pbuf,并将数据放入 pbuf 的 payload 中,然后将 pbuf 通过邮件发送给 去处理。驱动默认使用 LAN8720,如果使用的是其它型号的 PHY,应该修改 rtconfig.h 中的宏定义(在 drv_eth.h 中有多个 PHY 的宏定义),使程序能正确设置自动协商并读取 PHY 的连接状态和速率。
2024-12-11 14:19:36
2449
2
原创 rt-thread学习之路第七十二章——小熊派连接华为云
我们可以通过华为云提供的官方产品帮助文档中,根据参数描述自己计算出三元组;这样配置后,还不能完全保证与服务器的通信连接(无法接受mqtt服务器发过来的数据)。设备使用MQTT协议接入平台时,平台和设备通过Topic进行通信。(需将“{device_id}”替换为所需的设备id)(需将“{device_id}”替换为所需的设备id)这里我们需要填入两个信息就可以生成三元组了。注意,以上配置务必保证板载驱动支持。至此,华为云的相关配置结束。进入华为云设备接入控制台。保存退出,直接生成工程。
2024-12-10 18:23:52
878
2
原创 rt-thread学习之路第七十一章——潘多拉开发板实现电源管理
那么在系统时钟停止后,OS Tick 也会停止,对于某些依赖 OS Tick 的应用,在进入 Stop 2 模式,又被中断唤醒后,就会出现问题,因此需要在系统唤醒后,对 OS Tick 进行补偿。STM32L476 的运行模式移植主要是通过改变CPU 频率 和 稳压器,让其工作在 MR Range 2 或者 LP_RUN 模式,两个模式切换都会触发 CPU 频率改变的操作,这是一个比较危险的操作,我们在此处不作介绍。一般情况下,在 MCU 处于比较深度的休眠模式,只能通过特定的方式唤醒。
2024-12-10 18:19:19
1192
原创 rt-thread学习之路第七十章——固件尺寸化
RT-Thread-Studio 使用的是 GCC 编译器,GCC 编译器对代码的编译优化有一系列的配置项,大体分为五个优化等级:-O0、-O1、-O2、-O3 和 -Os。经过以上的裁剪步骤,差不多裁剪了十之八九了,接下来就要检查还有什么地方在裁剪的过程中被忽略了,然后再按照上面的步骤做深入的裁剪,在此不再一一演示,仅作展示说明为主。需要注意的是,并不是所有的优化都是行之有效的,如果收效甚微的优化却造成了系统性能的大幅衰减,这是非常不可取的,所以优化的时候要认真分析,综合考虑,不可能一蹴而就。
2024-12-10 14:57:28
1370
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅