嵌入式开发
文章平均质量分 68
victor_zy
宁静致远
展开
-
STM32使用USB虚拟串口+YMODEM实现IAP升级
USB虚拟串口基于USB CDC可以将USB做成虚拟串口,这块ST已经给我们做好了,直接使用相关封装好的接口就可以了,具体使用参考:https://blog.csdn.net/mirco_mcu/article/details/106081950这里就不再赘述了。注意两点:配置好后与上们机通信不用关心波特率,一般波特率都能通信不需要改任何配置,直接使用以下接口收CDC_Receive_FS,这个有点像串口IDLE中断了发CDC_Transmit_FSYMODEM协议这也不用讲了😂,看这原创 2022-04-22 11:07:43 · 3312 阅读 · 6 评论 -
IAP之boot实现
flash基本规划为实现IAP升级,一般将flash规划成如上区域。bootloader: 系统引导app: 主程序运行的地方update: 新的主程序固件存放的地方这里给bootloader预留16K的空间,所以APP所在地址是0x08004000,编译APP时,要注意将中断向量表的偏移地址设置为0x4000bootloader要完成的功能根据以上描述,bootloader应有以下功能跳转功能,可以跳转到app区执行主程序固件搬运功能,因为固件中断向量偏移是固定的0x4000,所以如原创 2022-04-22 09:37:34 · 827 阅读 · 0 评论 -
STM32_Programmer_CLI基本用法及在vscode中的使用
安装完STM32CubeProgrammer后,程序是带命令行接口程序的,即STM32_Programmer_CLI。这个程序就在安装路径的bin目录。将程序目录添加Path环境变量后,就可以愉快的在命令行使用STM32_Programmer_CLI操作单片机了。比如我把STM32CubeProgrammer安装到了C盘,打开环境变量设置,将bin目录添加到Path:![在这里插入图片描述](https://img-blog.csdnimg.cn/c56a5fb26eb746bd921607aad8dd原创 2022-02-16 15:04:10 · 1605 阅读 · 0 评论 -
rt-thread物联网开发板用qboot实现固件ota升级
使用qboot软件包制作bootloader为了使bootloader尽量小,对内核及其组件进行了如下配置线程间通信只用选择这两个:为了方便调试,下面这项配置成这样:组件中除了这两项其他都不选:这个msh shell其实占用rom挺多的。我们用console打印调试信息,但是可以不用shell, shell只是一些命令集网络组件全部不用,这些子菜单点进去,确认都没有选上!配置qboot开发板上红色灯是E7,低电平点亮,所以这里running status led pin设置为71,l原创 2022-02-09 17:46:17 · 6395 阅读 · 1 评论 -
rt-thread物联网开发板mqtt实验
一、环境硬件平台:潘多拉开发板rt-thread版本:v4.1.0编译平台:gcc依赖的package: easy_flash, fal, wlan_wiced, stm32_sdio, mymqtt二、使用过程1、更改配置在bsp目录,打开ComEmu 运行menuconfig:使能wifiwifi依赖这些包:easy_flash, fal, wlan_wiced, stm32_sdio。wifi使能后这些包会自动选中使能mymqtt包这个包确实比Paho MQTT好用,原创 2022-01-26 15:50:16 · 4610 阅读 · 0 评论 -
rt-thread编译时出现undefined reference to `_read‘ `_write‘链接错误
问题遇到的现象和发生背景使用easyflash时,编译时没有问题,链接时总出问题问题相关代码(官方例程)static void test_env(void) { uint32_t i_boot_times = 0; char *c_old_boot_times; char c_new_boot_times[11] = {0}; c_old_boot_times = ef_get_env("boot_times"); if (c_old_boot_times == RT_NULL)原创 2022-01-22 15:22:05 · 1814 阅读 · 0 评论 -
rt-thread驱动构架之pin
先看手册中,GPIO的寄存器映射:至少有两点可以确定:从GPIOA到GPIOH,地址是连续的每组GPIO基地址相差0x400依据这,rt-thread在给GPIO编号的时候,给每组port定义一个偏移,偏移单位是0x400port偏移几个单位GPIOA0GPIOB1GPIOC2……比如,知道了GPIO的基地址是0x48000000,那么GPIOB的基地址是0x48000000 + 0x400 * 1rt-thread中给GPIO的编号原创 2022-01-11 16:58:16 · 506 阅读 · 0 评论 -
rt-thread构建后生成hex文件
默认情况下,在bsp目录运行scons编译后,只会生成bin文件,但是可能有的同学需要hex文件。这时候就需要这么干了:打开rtconfig.py文件,找到如下这段就是根据编译工具链,确定编译脚本大致来说,根据所使用的IDE,有三种编译器:IDE(平台)编译工具gccarm-none-eabi-gcckeilarmcciariccarm每个if elif选项的最后,都有一个POST_ACTION(就是一个字符串变量),这就是编译完了后需要执行原创 2022-01-07 08:41:54 · 1197 阅读 · 0 评论 -
rt-thread在线程序包使用体验
rt-thread在线程序包使用体验以PANDORA开发板为例,如果要驱动板上的aht10传感器器,读取温湿度。我们通过online package直接从线上下载驱动。下载package1、在bsp目录打开menuconfig。导航到如下菜单RT-Thread online packages -> peripheral libraries and drivers -> sensors drivers使能aht10的驱动库,按空格键是“选中”。2、导航到Hardware Drivers原创 2022-01-05 17:02:01 · 667 阅读 · 0 评论 -
由串口驱动分析rt-thread设备驱动框架
rt-thread中,线程、信号量、互斥锁、设备等等都是“**内核对象**”,`_object_container`是一个数组,包含所有的内核对象信息。对象信息的定义```cstruct rt_object_information{ enum rt_object_class_type type; /**< object class type */ rt_list_t object_list;原创 2021-12-29 17:29:56 · 1958 阅读 · 0 评论 -
rt-thread中的链表
链表一般地,C语言实现双向链表是这样定义节点的struct list_node { int data; struct list_node *prev; // 指向前一节点 struct list_node *next; // 指向后一节点}而在rt-thread中,链表定义是这样的:struct list_node { struct list_node *next; struct list_node *prev;};链表的操作是这样的:// 初始化环形链表sta原创 2021-12-27 15:25:08 · 1177 阅读 · 0 评论 -
使用rt-thread
紧接上文《bsp的制作》通过对其文件组织结构及编译配置的了解,可以有一种更好的文件组织形式在rt-thread-port目录新建文件夹,命名为rt-thread把除bsp之外的所有文件及文件夹移进来。把制作好的bsp,及stm32目录下的libraries和open103r_bsp移动到rt-thread-port目录。这样的话,文件结构清晰多了改完之后 ,要修改相关脚本文件,才能正常使用menuconfig及正常使用scons编译有几个重要变量RTT_ROOT: rt-thread原创 2021-12-13 17:49:29 · 1067 阅读 · 0 评论 -
制作自己开发板的rt-thread bsp
目的通过官方的模板制作自己开发板的BSP第一步 复制相关文件官网下载下来的源代码解压得到rt-thread文件夹,在另一个地方给我们的工程新建一个目录,比如命名为rt-thread-port。把rt-thread目录中除了bsp之外的文件夹和文件都复制过来。在rt-thread-port中新建bsp文件夹,bsp下新建stm32,stm32下面新建libraries我的开发板是stm32f103rct6, 所以只把rt-thread/bps/stm32/libraries下的HAL_Dri原创 2021-12-08 17:25:53 · 837 阅读 · 0 评论 -
printf不能打印浮点类型
用vscode和stm32cubemx搭建stm32开发环境后,然后重写_write函数以便用串口重定向printf以输出调试信息,发现不能打印浮点类型原创 2021-12-02 11:03:21 · 3129 阅读 · 0 评论 -
VSCode实现STM32开发
VSCode简洁美观、功能强大、插件丰富。多用于桌面开发,或许你不知道vscode还可以用来开发嵌入式。下面就来详细介绍下实现过程依赖的工具STM32CUBEMX, ST官方的初始化代码生成工具 Visual Studio Code, 个人认为目前最优秀的跨平台代码编辑器 MingGW, windows版gcc,主要使用其make命令 GNU Arm Embedded Toolchain, 交叉编译工具链 openocd, 烧录工具原创 2021-11-30 09:03:27 · 9363 阅读 · 6 评论