代码收藏家 技术教程 2023-01-23 STM32全链路开发实战教程:2022年10月19日更新的总目录 文章目录 专栏说明 一、开发环境相关 二、STM32裸机开发 STM32CubeMX系列教程 玩转嵌入式屏幕显示 嵌入式开源小组件的使用 mbedtls开源安全库 DW1000 UWB芯片开发笔记 LVGL学习笔记 经验积累 三、项目经验积累 四、RTOS开发 1. RTOS内功修炼记(内核剖析) 2. TencentOS-tiny 3. LiteOS 5. ThreadX 6. uc/OS-III 7. FreeRTOS 五、IoT物联网开发 1. 通信协议 2. 私有云搭建 3. 公有云对接 4. 设备侧对接实例 5. 通信模组系列 六、ARM架构研究 七、项目实战 RT-Thread迷你桌面时钟 专栏说明 本教程专注于IoT领域开发,内容用五个字概括:从裸机到云端。 讲述如何使用STM32CubeMX进行裸机开发(覆盖常用外设) 如何使用TencentOS-Tiny、RT-Thread、ucOS、FreeRTOS、threadX等RTOS 如何使用各种开源组件库 常见WiFi、4G、NB-IoT、LoRa等通信模组的使用、 mqtt对接各种云平台 一些实战项目 持续更新中…… 截至20220919共有157篇文章 一、开发环境相关 【Keil MDK】(一)Keil MDK 5.28 的下载、安装、破解 【Keil MDK】(二)Keil MDK中芯片器件包的安装 【Keil MDK】(三)Keil MDK更换Sublime Text Molokai主题 【Keil MDK】(四)Keil MDK的一些推荐功能(编码格式、自动保存、代码提示、动态语法检查、多核编译) 【STM32开发环境】Linux下开发stm32(一) | 使用gcc-arm-none-eabi工具链编译 【STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序(2022.04.05更新) 【STM32开发环境】Linux下开发stm32(三) | 寄存器工程开发 【STM32开发环境】Linux下开发stm32(四) | 固件库工程开发 Windows上使用 OpenOCD 给 STM32 下载程序 mac下搭建stm32开发环境 二、STM32裸机开发 实战篇中使用的开发板是小熊派开发板 STM32CubeMX系列教程 【STM32Cube_01】初识 STM32Cube 生态系统 【STM32Cube_02】获取并安装STM32CubeMX 【STM32Cube_03】使用GPIO点亮一个LED 【STM32Cube_04】使用GPIO进行按键检测 【STM32Cube_05】使用EXIT中断检测按键 【STM32Cube_06】使用USART发送和接收数据(查询模式) 【STM32Cube_07】使用USART发送和接收数据(中断模式) 【STM32Cube-08】使用USART发送和接收数据(DMA模式) 【STM32Cube-09】重定向printf函数到串口输出的多种方法 【STM32Cube-10】使用ADC读取气体传感器数据(MQ-2) 【STM32Cube-11】使用通用定时器闪烁LED 【STM32Cube-12】使用通用定时器产生PWM驱动蜂鸣器 【STM32Cube-13】使用硬件I2C读写EEPROM(AT24C02) 【STM32Cube-14】使用硬件I2C读取环境光强度传感器数据(BH1750) 【STM32Cube-15】使用硬件I2C读取温湿度传感器数据(SHT30) 【STM32Cube-16】使用硬件CRC校验数据(以SHT30为例) 【STM32Cube-17】使用硬件SPI驱动TFT-LCD(ST7789) 【STM32Cube-18】使用硬件QSPI读写SPI%20Flash(W25Q64) 【STM32Cube-19】使用SDMMC接口读写SD卡数据 【STM32Cube_20】在SD卡上移植FATFS文件系统 【STM32Cube_21】使用DAC输出任意指定电压 【STM32Cube_22】使用ADC读取电压值 【STM32Cube_23】使用USART接收GPS数据并解析(L80-R) STM32CubeMX | 28 – STM32片内Flash的使用 STM32CubeMX | 29-使用硬件I2C读取甲醛传感器SGP30 STM32CubeMX | 30-使用硬件SPI读写FLASH(W25Q64) STM32CubeMX | 31-使用硬件FMC读写SDRAM(W9825G6KH) STM32CubeMX | 32-使用硬件FMC驱动TFT-LCD屏幕(MCU屏) STM32CubeMX | 33-使用GPIO读取温度传感器数据(DS18B20) STM32CubeMX | 34-使用硬件FSMC读写SRAM(IS62WV51216) STM32CubeMX | 35-使用硬件FSMC驱动TFT-LCD屏幕(MCU屏,NT35510控制器) STM32CubeMX | 36 – 使用CAN总线进行双板通信(TJA1050) STM32CubeMX | 37 – 使用RS485总线进行双板通信(SP3485) STM32CubeMX | 38-使用硬件SPI驱动以太网模块(W5500) STM32CubeMX | 40 – 实时时钟RTC的使用(日历和闹钟) STM32CubeMX | 41 – 使用LTDC驱动TFT-LCD屏幕(RGB屏) STM32CubeMX | 42 – 使用DMA2D加速显存数据传输 玩转嵌入式屏幕显示 【玩转嵌入式屏幕显示】(一)显示器概述(常见显示器及其显示原理) 【玩转嵌入式屏幕显示】(三)TFT-LCD屏幕打点 + 画线 + 画矩形 + 画圆Bresenham算法实现(基于打点函数,算法可移植到任何屏幕的驱动程序之上) 【玩转嵌入式屏幕显示】(四)TFT-LCD屏幕显示英文字符(ASCII)和字符串 【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片 ST7789 SPI LCD硬件垂直滚动功能的使用 【玩转嵌入式屏幕显示】(七)LCD中文字符显示机制 嵌入式开源小组件的使用 cJSON使用详细教程 | 一个轻量级C语言JSON解析器 MultiButton | 一个小巧简单易用的事件驱动型按键驱动模块 letter-shell | 一个功能强大的嵌入式shell EasyLogger | 一款轻量级且高性能的日志库 SFUD | 一款串行 Flash 通用驱动库 EasyFlash | 让 Flash 成为小型 KV 数据库 EasyFlash V4.0 ENV 功能设计与实现 MultiTimer | 一款可无限扩展的软件定时器 MultiTimer v2 重构版本 | 一款可无限扩展的软件定时器 cmd-parser | 一个基于哈希匹配的超快命令解析器 jsmn | 一个资源占用极小,解析速度最快的json解析器 CmBacktrace | 一款 ARM Cortex-M 系列 MCU 错误追踪库 ringbuff | 通用FIFO环形缓冲区实现库 使用J-Link打印日志——SEGGER Real-Time Transfer(RTT)工具的移植使用 mbedtls开源安全库 mbedtls | 01 – 移植mbedtls库到STM32的两种方法 mbedtls | 02 – 伪随机数生成器(ctr_drbg)的配置与使用 mbedtls | 03 – 单向散列算法的配置与使用(MD5、SHA1、SHA256、SHA512) mbedtls | 04 – 对称加密算法的配置与使用(AES算法) mbedtls | 05 – 消息认证码的配置与使用(HMAC算法、GCM算法) mbedtls | 06 – 非对称加密算法的配置与使用(RSA算法) mbedtls | 07 – DH秘钥协商算法的配置与使用 mbedtls | 08 – ECDH秘钥协商算法的配置与使用 mbedtls | 09 – 数字签名算法的配置与使用(RSA数字签名算法、ECDSA数字签名算法) mbedtls | 10 – 数字证书及 X.509 证书标准 DW1000 UWB芯片开发笔记 DW1000开发笔记(一)DW1000芯片概览 DW1000开发笔记(二)使用STM32硬件SPI+STM32cubeMX+HAL库测试DW1000通信 DW1000开发笔记(三)基于STM32 HAL库裸机工程移植DW1000官方驱动 DW1000开发笔记(四)DW1000使用轮询方式发送数据 DW1000开发笔记(五)DW1000使用轮询方式接收数据 DW1000开发笔记(六)DW1000发送数据并等待另一个DW1000回应 LVGL学习笔记 LVGL v8学习笔记 | 01 – LVGL PC模拟器初体验 LVGL v8学习笔记 | 02 – 移植LVGL 8.2到STM32F407开发板(MCU屏) LVGL v8学习笔记 | 03 – 移植LVGL 8.2到小熊派开发板(SPI屏) LVGL v8学习笔记 | 04 – 移植LVGL 8.2到STM32F429开发板(RGB屏) LVGL v8学习笔记 | 05 – LVGL基础对象(lv_obj_t) LVGL v8学习笔记 | 06 – label控件的使用方法 LVGL v8学习笔记 | 07 – 字体的使用方法 LVGL v8学习笔记 | 08 – 按钮控件的使用方法 LVGL v8学习笔记 | 09 – 进度条控件的使用方法(bar) LVGL v8学习笔记 | 10 – Tabview控件的使用方法 LVGL v8学习笔记 | 11 – 列表控件的使用方法(list) 经验积累 经验分享 | STM32CubeMX + STM32F1系列开发时遇到的四个问题及解决方案分享 基于STM32标准库建立Keil-MDK工程模板(STM32F407ZG) STM32如何跳转到指定地址执行程序 三、项目经验积累 骚操作!快速创建JSON数据和解析JSON数据 C语言从一段字符串中提取IP地址的方法 实用小技巧 | 用socket玩转http接口 C语言使用 sscanf 提取AT命令返回结果中的有效数据 keil遇到FCARM – Output Name not specified, please check ‘Options for Target – Utilities‘解决方法 Jlink接口引脚定义 STM32WL芯片解锁方法 位图数组在XY方向镜像翻转算法实现 四、RTOS开发 1. RTOS内功修炼记(内核剖析) RTOS内功修炼记(一)—— 任务到底应该怎么写? RTOS内功修炼记(二)—— 优先级抢占调度到底是怎么回事? RTOS内功修炼记(三)—— 内核到底是如何管理中断的? RTOS内功修炼记(四)—— 小小的时钟节拍,撑起了内核半边天! RTOS内功修炼记(五)—— 任务间同步机制的实现,万变不离其宗! RTOS内功修炼记(六)—— 任务间通信为什么不用全局变量? RTOS内功修炼记(七)—— 内存管理 RTOS内功修炼记(八)——CMSIS RTOS API,内核通用API接口 RTOS内功修炼记(九)—— 任务入口函数执行完毕之后去哪里? 2. TencentOS-tiny TencentOS-tiny 正式开源,全网首发评测,带你极速上手体验! 数据结构 | TencentOS-tiny中的双向循环链表的实现及使用 移植TencentOS-tiny内核到裸机工程的方法 TencentOS-tiny软件定时器的使用 数据结构 | TencentOS-tiny中队列、环形队列、优先级队列的实现及使用 数据结构 | TencentOS-tiny中单向链表的实现及使用 基于TencentOS-tiny实现PM2.5传感器(攀藤PMSA003)数据解析思路及实现 基于TencentOS-tiny实现甲醛传感器(英国达特 WZ-S)数据解析思路及实现 3. LiteOS LiteOS内核教程01 | IoT-Studio介绍及安装 LiteOS内核教程02 | HelloWorld LiteOS内核教程03 | 任务管理(超简洁API,一行代码即可创建任务) LiteOS内核教程04 | 信号量(用于任务间同步) LiteOS内核教程05 | 互斥锁(共享资源保护) LiteOS内核教程06 | 内存管理 atiny_log | LiteOS 物联网操作系统中的日志打印组件使用分享 shell | LiteOS 物联网操作系统中的 shell 组件使用分享 RT-Thread、LiteOS这些操作系统中,编译出的程序为什么能打印出当前时间? 一行代码就能写一个日志打印组件,你信吗?为你揭晓RTOS中日志打印组件的核心 5. ThreadX 【首发】从搭建环境开始,教你如何在小熊派上跑起来ThreadX操作系统! ThreadX操作系统在MDK中的移植方法(2021.06.06更新) 6. uc/OS-III 移植uc/OS-III最新版到小熊派开发板(STM32L431) 7. FreeRTOS FreeRTOS学习笔记01 | 移植FreeRTOS到小熊派开发板(STM32L431RC) 五、IoT物联网开发 1. 通信协议 CoAP | 物联网中的RESTful架构实现 2. 私有云搭建 AIOT时代来临,物联网平台(IoT Platform)真有那么重要吗? Redis 3.2安装过程(win10) PostgreSQL 10.11在Windows10的安装方法 Mosquitto在win10的安装方法 Docker-ce最新版在Ubuntu18.04上的安装、更新、卸载方法(存储库方式) Docker Compose 在Linux上的安装方法 EMQX MQTT 服务器(上篇)| 使用EMQ-X搭建私有MQTT服务器 EMQX MQTT 服务器(下篇)| 开启客户端身份安全认证并使用mqtt.fx测试 Node-RED | 无需一行代码,快速在浏览器中构建一个可视化 IoT Web App 3. 公有云对接 mqtt.fx | 一款超级好用的Mqtt客户端软件(下载、安装、使用详解) 使用mqtt.fx对接百度天工物接入平台 4. 设备侧对接实例 paho | 支持10种语言编写mqtt客户端,总有一款适合你! 小熊派移植TencentOS-tiny+ESP8266+MQTT对接腾讯云平台IoThub 小熊派移植 TencentOS-tiny+M26/EC20+MQTT 对接腾讯云平台IoThub 小熊派移植 TencentOS-tiny+EC20+SAL框架对接 TCP/UDP 服务器 TencentOS-tiny+ESP8266+mqttclient对接腾讯云平台IoThub 使用创思通信4G Cat1 DTU基于TencentOS-tiny对接腾讯云物联网开发平台 使用 TencentOS tiny 对接腾讯云IoT Explorer(以智能灯为例) 5. 通信模组系列 ESP8266固件升级方法(ESP8266-12F模组) 移远 M26 GSM模组(2G通信模组)AT指令测试 TCP 通信过程 移远 EC20 模组(4G通信模组)AT指令测试 TCP 通信过程 合宙 Air 724UG模组(4G Cat.1通信模组)测试过程 移远BC35-G模组(NB-IoT 通信模组)AT指令测试 UDP 通信过程 SIMCOM800C GSM模组(2G通信模组)AT指令测试 TCP 通信过程 使用ESP8266腾讯云定制固件对接腾讯云平台IoThub 使用ESP8266腾讯云定制固件对接腾讯云物联网平台IoT Explorer 移远 EC200S 模组(4G Cat.1 通信模组)AT指令测试 TCP/UDP 通信过程 广和通 L610 模组(4G Cat.1 通信模组)AT指令测试 TCP/UDP 通信过程 SIMCOM A7670 模组(4G Cat.1 通信模组)AT指令测试 TCP/UDP 通信过程 资料分享 | 整理一下自己积攒的 LoRa和LoRaWan 资料 六、ARM架构研究 ARM探索之旅 01 | 带你认识ARM Cortex-M阵营 ARM探索之旅 02 | ARM Cortex-M 用什么指令集? ARM探索之旅 03 | 如何使用 ARM FPU 加速浮点计算 七、项目实战 RT-Thread迷你桌面时钟 使用RT-Thread Studio DIY 迷你桌面时钟(一)| 基于STM32芯片创建HelloWorld工程 使用RT-Thread Studio DIY 迷你桌面时钟(二)| 获取温湿度传感器数据(I2C设备驱动+SHT3x软件包) 使用RT-Thread Studio DIY 迷你桌面时钟(三)| 获取NTP时间(at_device软件包 + netutils软件包) 使用RT-Thread Studio DIY 迷你桌面时钟(四)| OLED显示时钟和温湿度(cpp组件 + u8g2软件包) 使用RT-Thread Studio DIY 迷你桌面时钟(五)| 使用内置 Git 插件管理项目 RT-Thread Studio 使用笔记(六)| 获取光传感器数据(I2C设备驱动+BH1750手写驱动代码分享) RT-Thread Studio 使用笔记(七)| 配合STM32CubeMX添加裸机驱动(以ADC为例) RT-Thread Studio 使用笔记(八)| 使用MQTT对接EMQ-X服务器(使用 pahomqtt 包) RT-Thread Studio 使用笔记(九)| 开启OLED显示(使用 u8g2 软件包 c-latest 版本) RT-Thread Studio 项目实战教程 | 快速打造一个桌面mini网络时钟 ARM stm32 单片机 物联沃分享整理物联沃-IOTWORD物联网 » STM32全链路开发实战教程:2022年10月19日更新的总目录