自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 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 3295 6

原创 IAP之boot实现

flash基本规划为实现IAP升级,一般将flash规划成如上区域。bootloader: 系统引导app: 主程序运行的地方update: 新的主程序固件存放的地方这里给bootloader预留16K的空间,所以APP所在地址是0x08004000,编译APP时,要注意将中断向量表的偏移地址设置为0x4000bootloader要完成的功能根据以上描述,bootloader应有以下功能跳转功能,可以跳转到app区执行主程序固件搬运功能,因为固件中断向量偏移是固定的0x4000,所以如

2022-04-22 09:37:34 821

原创 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 1602

原创 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 6378 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 4607

原创 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 1811

原创 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

原创 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 1196

原创 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 666

原创 由串口驱动分析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 1951

原创 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 1176

原创 使用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 1063

原创 CANopen对象字典

想象CANopen的应用场景之一——电机控制控制器通过CAN总线控制电机1和电机2。同时需要,电机1和电机2把实时的状态参数返回给控制器,两者之间大概有以下通信内容:要完成这些通信项目,控制器和电机之间,必然要规定一个通信协议。比如,什么报文是控制启动/停止的,怎样的报文是调节速度的,怎样的报文是编码器信息等等。这个协议就是对象字典要描述的对一个有11位ID和8个字节数据的标准帧。如果说11位的ID分类规定了CANopen一个大的报文类型,则对象字典对8个字节数据的意义作了描述。字节0

2021-12-10 10:50:37 3581 1

原创 制作自己开发板的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 835

原创 CANopen的ID分类

can总线标准数据帧标准帧ID有11位,数据可以有0~8个字节。canopen的ID在canopen中,把11位的ID分成两部分,前4位是功能码,后7位是节点ID功能4位功能码的二进制表示完整表示(前面补0,后面加7位node-id,凑成12位,然后用十六进制表示)EMCY0b00010x080 + node-idTPDO10b00110x180 + node-idTPDO20b01010x280 + node-idTPDO30b01110x3

2021-12-07 11:33:53 3932

原创 win10安装MinGW

安装包下载在线安装包去这个网址下载安装包,点进去之后如下界面直接选MingW-W64-builds跳到这里点击"Sourceforge"就进入下载页面了。备选下载离线安装包直接选框中的下载吧。安装双击mingw-w64-install.exe出现安装界面,点击"next",出现选项点击下一步后,会进入下载,下载完成后正式进入安装流程。点击next即可,安装完成后点击finish如果是下载的离线压缩包,直接解压到C:\Program Files\下:设置环境变量右击“些电脑”,选择

2021-12-03 16:55:24 2074

原创 printf不能打印浮点类型

用vscode和stm32cubemx搭建stm32开发环境后,然后重写_write函数以便用串口重定向printf以输出调试信息,发现不能打印浮点类型

2021-12-02 11:03:21 3118

原创 VSCode实现STM32开发

VSCode简洁美观、功能强大、插件丰富。多用于桌面开发,或许你不知道vscode还可以用来开发嵌入式。下面就来详细介绍下实现过程依赖的工具STM32CUBEMX, ST官方的初始化代码生成工具 Visual Studio Code, 个人认为目前最优秀的跨平台代码编辑器 MingGW, windows版gcc,主要使用其make命令 GNU Arm Embedded Toolchain, 交叉编译工具链 openocd, 烧录工具

2021-11-30 09:03:27 9350 6

原创 卡尔曼滤波算法详细推导

一、预备知识1、协方差矩阵 是一个维列向量,是的期望,协方差矩阵为 可以看出 协方差矩阵都是对称矩阵且是半正定的 协方差矩阵的迹是的均方误差2、用到的两个矩阵微分公式 公式一: 公式二:若是对称矩阵,则下式成立 ......

2018-09-27 16:44:39 82053 48

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除