- 博客(72)
- 资源 (23)
- 收藏
- 关注
原创 rt thread studio中调用math.h里的函数找不到
使用rt thread studio编译器函数中调用fmod() sin()等函数报错,头文件已经添加了math.h的头问题了。如果使用的有rt thread操作系统,只需要开启libc就可以了。根本原因是没找到xxx函数的实现代码,应该是没有链接m库(数学库)提示:undefined reference to `sin'如果使用裸机开发,需要在工程属性里添加-lm。一般是通过-lm添加。再次编译,问题解决。
2024-10-18 12:01:40
267
原创 RT-Thread系统使用STM32H7芯片串口5不工作
使用stm32h743芯片串口5不工作,其他串口都正常,TX5->PC12,RX5->PD2。drv_usart.c里面串口5的TX和RX反了,将TX和RX对调后解决。
2024-06-12 11:57:57
213
原创 RT-Thread更改msh串口波特率
修改rt-thread文件下components下dirvers下serial.h文件里。#define RT_SERIAL_CONFIG_DEFAULT 里的默认波特率即可。
2024-05-27 09:43:58
603
原创 RT-Thread芯片更改外部晶振后串口乱码
SMT32F407芯片由内部晶振改到外部24MHz晶振后串口乱码,drv_clk.c时钟配置如下。在stm32f4xx_hal_conf.h文件里有定义HSE的时钟频率,默认是8MHz。如果外部晶振使用的不是8MHz,这里的定义也要改。
2024-02-23 11:15:26
1087
原创 RT-Thread基于STM32H743的网络通信调试
14.其实也很简单,更改一下board.h里RAM地址和大小的定义就好了,前说过H743默认使用的是DTCM RAM起始地址是0x20000000,大小128K。我们要改成AXI SRAM。11.接下来就要更改H743芯片的RAM地址了,H7系列的RAM分了好多块,默认使用的是DTCM,起始地址0x20000000,大小时128K。使用STM32H743开发网络通信,本以为会很简单,实际却遇到好多问题,记录一下,以备后续查看。ETH默认是使用DMA的,但DTCM的速度是400M,DMA无法进行访问。
2023-11-18 20:37:26
1395
4
原创 RT-Thread系统使用常见问题处理记录
解决办法:更改agile_telnet软件包里Set agile_telnet tx buffer size的大小。最近4.2版本的改成了HAL_TIM_Base_MspInit函数。解决办法:老版本的PWM里定时器时钟的初始化函数是HAL_TIM_PWM_MspInit。解决办法:更改paho_mqtt_pipe.c里PIPE_BUFSZ为2048。解决办法:在board.c里的CAN2打开时钟前增加CAN1时钟使能。原因:要先使能CAN1的时钟,再使能CAN2的时钟。原因:telnet发送缓存太小。
2023-11-02 16:14:47
1125
原创 ubuntu无法定位软件包 tfpd-hpa
按照网上的解决办法更改/etc/apt/sources.list里面的下载源问题依旧,然后又把sources.list文件改回原来的。安装sudo apt-get install tftp-hpa tftpd-hpa。结果我的软件和更新根本无法打开,又开始解决软件和更新无法打开的问题。软件和更新无法打开的问题是Python的问题,重装3.6即可。然后在下载tftp-hpa tftpd-hpa就成功了。sudo apt-get update可以下载了。还有的方法是要改软件和更新里面的源代码下载地址。
2023-07-08 16:39:40
1681
原创 rt thread系统下实现恢复出厂设置功能
在qboot.c文件里的static void qbt_thread_entry(void *params)线程里增加查找分区和判断重启次数的函数。屏蔽掉bootloader里的w25q128.c文件里的config_part分区定义。将线程堆栈改下,肯定一启动就报错重启,将版本改为V1.9.2,然后升级。修改bootloader和app的分区表,增加factory分区。qboot软件包里恢复出厂设置分区名字要和实际的一致。然后在app程序里增加清除重启次数的功能。
2023-07-01 17:44:18
413
原创 hard fault on thread: mqtt0解决办法
继续搜索RT_PIPE_BUFSZ,发现根本就没有定义这个,可能是新版本的改成RT_USING_POSIX_PIPE_SIZE这个名字了,将paho_mqtt_pipe.c里这个地方改成2048后解决。也可以将这里的RT_PIPE_BUFSZ替换成RT_USING_POSIX_PIPE_SIZE。更改这里为2048后出问题的概率更高了。rt thread版本4.1.0。使用paho mqtt软件包。
2023-06-15 13:30:23
1038
原创 AT32F437制作Bootloader然后实现Http OTA升级
首先创建一个AT32F437的工程,然后发现调试工程配置这里的型号和创建工程选的型号不一致,手动更改一下,使用PW Link下载程序的话还要配置一下pyocd.exe的路径。项目使用的是AT32F437VMT7芯片,内部flash空间是4032K,用来做OTA升级完全够用,就没有使用外部FLASH,打开FAL分区功能。新建工程明明选的是AT32F437VMT7,新建完工程后芯片型号居然变了,只好手动改一下,如上图所示。然后发个OTA升级的命令,开始下载重启,新的程序就更新过去了。
2023-03-10 11:51:14
1967
7
原创 rt thread 使用freemodbus TCP记录
1.modbus tcp主机一般作为tcp客户端,从机作为tcp服务器。modbus tcp服务器的端口号默认是502,端口号定义在porttcp.c文件里。客户端连接成功事件在porttcp.c文件里的tcpserver_event_notify函数里。TCP服务器接收到的socket原始数据在porttcp.c文件里的tcpserver_event_notify函数里。查看方法如下:...
2021-11-16 13:46:01
1203
1
原创 LWIP socket通信设置发送和接收超时时间
在使用lwip协议栈做TCP客户端通信的时候发现,如果在发送的时候关闭TCP服务器的连接则在调用ret = send(mytcp_sock, out_str11, strlen(out_str11), 0);函数的时候会返回-1.如果在正常通信的时候切换服务器的wifi,而没有断开TCP服务器,在调用ret = send(mytcp_sock, out_str11, strlen(out_str11), 0);函数时会发生阻塞。没有数据返回。这样就无法检测网络连接是否断开,如果需要设置发送超时,
2021-10-25 15:07:54
3462
原创 TLE5012磁编码器使用记录
话不多说,硬件连接图 单片机SPI的MOSI和MISO脚连一起,加4.7K上拉电阻。软件使用SPI通信。#define BMQ_LZ_D 30//编码器轮子直径30mm//#define BMQ_pi 3.141592653 //π值#define BMQ_motor_L (BMQ_LZ_D * M_PI) //轮子的周长#define TLE_CSS...
2021-08-04 14:34:43
3793
原创 RT-Thread系统下使用LWIP协议栈,设置TCP发送超时的问题
1.使用RT-Thread Studio写TCP传输程序时用stm32f407+lan8720做TCP客户端,PC机做TCP服务器传输数据。发现:客户端和服务器正常连接时拔掉网线打印link down,可以检测到网线被拔掉了。运行过程中断开TCP服务器,或直接关闭TCP服务器也可以检测到。接收数据返回错误。但如果正常连接情况下直接断开TCP的WIFI、也就是把电脑的FIWI断开,则TCP客户端无法检测到,发送数据还一直提示成功。想要解决这个问题首先想到的是设置TCP发送超时时间,
2021-05-26 17:41:29
1854
原创 rt-thread studio软件使用math.h和stdlib.h里的函数报错问题
rt-thread studio软件里使用了atof()函数和fabs()函数总是报警告和错误。程序开头明明加了#include "math.h"#include "stdlib.h"而且报的错误让人看不懂右键打开math.h头文件,里面竟然只有这么一点程序,肯定不对了。stdlib.h里也是一样。检查了半天发现是要打开RT-Thread Settings里面的libc组件然后编译没有错误和警告了。...
2021-05-13 14:18:52
1097
2
原创 rt-thread studio中添加lan8720网络驱动
1.使用rt-thread studio新建项目,选择好主控芯片和打印串口。新建工程第一步当然是关心芯片各个总线的系统失踪啦,打开driver文件下的drv_clk.c文件修改#define DBG_LVL DBG_INFO为#define DBG_LVL DBG_LOG打印出系统时钟编译、下载通过串口即可看到当前的系统时钟,可以看到rt thread系统已经把系统时钟配置好了,我们用系统默认就可以。如果需要修改更改drv_clk.c文件里的system_clock_config()
2021-05-05 17:12:48
2806
6
原创 altium designer创建圆形实心填充
altium designer在PCB中画一个圆形的实心填充方法。先在PCB中画一个空心圆环然后选中这个圆,然后点击工具->转换->从选择的区域创建区域圆形实心填充就画好了
2021-04-10 10:06:19
18541
1
原创 网易云音乐下载MP3的方法
google浏览器打开想要下载的歌曲页面,右键选择检查找到Network选项,找到下面的other,然后在网页右键选择重新加载,就会出现如下页面。然后在网页上点击播放按钮,找到对应的m4a然后右键open in new table就可以下载下来了。...
2021-04-06 17:13:30
3790
原创 altium designer拼版例子
原版,长150mm、宽13mm。放置两排焊盘、2*8个,内外径都设置成0.55mm焊盘左右间距设置0.936mm,上下间距1.143mm选中整个PCB板,选择复制,中心点选择板子左下角位置,切换到另一个PCB文件中选择编辑->特殊粘贴选择保持网络名称和重复位号,然后点击粘贴阵列我们想要纵向阵列为两排,所以对象数量为2,X轴间距设置为0,Y轴间距设置为14.8(板子本身尺寸为13mm,加两排连接过孔设置为1.8mm)点击确定,然后放在PCB图中的原点位置,如图
2021-03-29 14:24:56
1921
原创 RT Thread系统下W5500芯片TCP通信,连续接收两条数据卡死问题
rt thread 系统下使用W5500做TCP通信,使用wiz软件包。测试发现如果在服务器上连续发送两条数据,那么程序就始终卡在了TCP数据接收线程中了,CPU占用率瞬间变成100%了。程序里所有比TCP接收线程优先级高的可以正常运行,比TCP接收线程低的都卡死了。如果你的tshell线程的优先级比TCP接收任务的优先级低的话,那么shell也用不了了,程序好像是死机了。为了调试方便我把tshell的优先级改为17,比TCP接收的优先级高一点。卡在这里差不多1分钟的时间后,系统
2021-03-11 20:29:27
3198
4
原创 Warning: The core is locked up的解决办法
rt thread studio V2.0版本编译器使用正点原子的DAP无线调试器进入调试模式后,再用J link下载程序就提示Warning: The core is locked up从菜单 SEGGER->JLink Arm V4.08l->;Processor Specific Utilities->J-Link STM32 Unlock ,运行一下就行了...
2021-02-22 09:04:27
3802
原创 rt thread studio使用QBOOT和片外flash实现OTA升级
我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系PB3-->SPI3_CLKPB4-->SPI3_MISOPB5-->SPI3_MOSIPE1-->SPI3_CSS第一步使用rt thread studio新建一个bootloader的工程,我这里使用的是stm32f407vgt6的芯片使能SPI驱动和SFUD驱动打开board.h文件,取消#define BSP_USING_SPI3的注释然后在stm
2021-02-03 13:29:52
5682
7
原创 C语言宏定义运算式计算错误的问题
RT-Thread Studio编译器里使用宏定义计算如下公式按照正常的数学运算关系,算出来的结果是453.59如果不加括号算出来的值完全不对,结果是 -1050360954.1510059952把计算过程全都加上括号后计算正确由此可见编译器是将宏定义的数字一层一层替换而已,按照正常的数学运算是没问题,但编译以后的值却不对,还是要把计算过程加上括号。...
2021-01-26 13:11:44
1434
1
原创 RT -Thread Studio开发环境下使用freemodbus驱动
双击RT -Thread Settings在软件包里搜索modbus,然后添加freemodbus软件包到工程右键详细配置硬件连接PE0接485芯片的RE脚使用单片机的uart2,作为modbus的主机,波特率115200保存一下将配置更新到工程中打开board.h文件添加#define BSP_USING_UART2然后编译下载在shell里输入mb_master_samlpe连接一个usb转485的模块打开串口,看到已经有数据了。freem
2021-01-22 19:01:38
862
2
原创 RT -Thread Studio开发环境下使用I2C驱动SHT30
双击RT -Thread Settings,打开软件模拟I2C然后添加上sht3x软件包编译一下,将软件包添加到工程中然后打开board.c文件打开#define BSP_USING_I2C1的定义,并将I2C的引脚填写完整我的I2C_SCL是单片机的PD3,I2C_SDA是单片机的PD0然后编译下载shell命令中输入sht3x输入sht3x probe i2c1返回sht3x probed, addr:0x44,说明已经探测到sht30传感器了输入sh
2021-01-22 16:55:24
748
原创 RT -Thread Studio开发环境下使用PWM设备驱动
双击RT -Thread Settings,使用PWM设备驱动程序打钩我这里使用的是STM32F407VGT6,PWM接到PD12、PD13、PD14、PD15也就是TIME4的4个通道所以在drv_pwm.c文件中添加#define BSP_USING_PWM4的宏定义...
2021-01-22 12:37:42
1167
2
原创 rt thread系统下添加wiznet软件包后,不插网线CPU利用率100%问题
rt thread系统下添加wiznet软件包后如果不插网线的话其他任务运行很卡,使用ps命令发现优先级低的任务很多都超时了rt thread线程错误码添加了一个可以查看CPU利用率的软件包CPU_usage查看CPU的利用率,启动一会后利用率就是100%但是插上网线后CPU利用率马上就降下来了,其他任务也可以正常运行了那问题肯定出在了W5500网卡驱动这块了尝试了很久发现如果没有插上网线的时候,系统不停的在执行DHCP这块就是wiz.c文件里的static void
2021-01-20 10:17:22
654
原创 RT -Thread Studio开发环境下使用CAN设备驱动
双击RT -Thread Settings,使用CAN设备驱动程序打钩编译一下更新设备驱动到当期项目然后在stm32f4xx_hal_conf.h文件中打开对CAN的支持,也就是取消掉 HAL_CAN_MODULE_ENABLED这个宏定义的注释然后使用Cube MX配置一下CAN的引脚,然后复制生成的引脚初始化代码。也就是void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)这个函数粘贴到board.c文件中然后在a
2021-01-19 09:51:23
6016
4
原创 RT -Thread Studio开发环境下使用W5500做TCP客户端
首先是具备W5500芯片的驱动,参考上一篇文章RT -Thread Studio开发环境下驱动W5500网络芯片https://blog.youkuaiyun.com/qq_25186745/article/details/112647919在这篇文章的基础上来继续写TCP客户端的程序在applications文件下新建my_tcp.c文件粘贴以下代码#include <rtthread.h>#include <sys/socket.h> /* 使用BSD socket
2021-01-15 11:24:32
2095
1
原创 RT -Thread Studio开发环境下驱动W5500网络芯片
开发环境RT -Thread Studio V2.0.0芯片STM32F407VGT6网络芯片W5500硬件连接第一步,打开SPI设备驱动框架双击RT -Thread Settings然后在打开devices文件下的board.h文件,打开#define BSP_USING_SPI2的定义,我这里使用的是SPI2然后在stm32f4xx_hal_conf.h文件中打开对 SPI 的支持,也就是取消掉 HAL_SPI_MODULE_ENABLED 这个宏定义
2021-01-15 10:44:50
3338
8
原创 RT-Thread Studio下打印系统时钟
使用RT-Thread Studio新建项目是会有提示,工程使用的是芯片内部HSI时钟,如需修改,请完善drv_clk.c新建项目后打开drv_clk.c中有打印各个总线的系统时钟的函数,也有INIT_BOARD_EXPORT初始化,但是程序下载后却没有打印出系统时钟信息。在drv_clk.c文件的开头有定义#define DBG_TAG "board"#define DBG_LVL DBG_INFO将#define DBG_LVL DBG_INFO修改为#define DBG
2021-01-14 13:43:31
942
原创 STM8L151硬件IIC从机通信频率低的问题
最近使用STM8L151G6U6做IIC从机使用,STM32F103做主机读取从机数据,发现主机读取数据的SCL时钟只要高于16KHz读取到的数据就出错,使用逻辑分析仪测试发现IIC通信的第一个地址位是有应答信号的,到第二个字节就没有应答了,只要降低IIC主机的SCL频率就没有问题,查看STM8L系列的手册,IIC最高通信频率支持到400KHz,这差距有点大,肯定是哪里有问题了。找了很多IIC的例子都是使用库函数写的,基本都差不多,IIC初始化也很简单,问题可能出在中断上。尝试直接读写IIC寄存器,
2020-12-29 15:59:31
1024
原创 stm32f407单片机rt thread 片外spi flash OTA升级配置示例
参考地址https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/第一步,生成BootLoader。Bootloader 在线获取地址: http://iot.rt-thread.com1.注册账号、新建产品。点击固件升级、然后是生成BootLoader。2.根据自己板子配置情况填写硬件信息。我的板子上是用的STM32F407VGT6,ROM是1M,RAM是192K
2020-09-28 15:09:11
3410
1
原创 LWIP协议栈[I/drv.emac] RxCpltCallback err = -3错误解决办法
RT-Thread系统下添加完LWIP协议栈,跑了个TCP的客户端,运行上一段时间就会报[I/drv.emac] RxCpltCallback err = -3的错误,但是程序还能正常运行,TCP收发数据也都正常更改rtconfig.h文件里的RT_LWIP_TCPTHREAD_MBOX_SIZE和RT_LWIP_ETHTHREAD_MBOX_SIZE的大小...
2020-08-11 20:35:41
1151
原创 TCP发送CJSON字符串示例代码
void mytcp_send_heartbeat(void){ int ret; char *out_str11; char ipsbuf[20]; cJSON * root11 = cJSON_CreateObject(); cJSON * item11 = cJSON_CreateObject(); cJSON_AddItemToObject(root11, "cmd", cJSON_CreateString("heartbeat"));//根节...
2020-08-04 12:55:04
1481
DF56C-30S-0.3连接器altium designer原理图、PCB封装
2020-11-02
winsen炜盛气体传感器模组ZE03系列电化学传感器原理图、PCB封装
2020-11-02
PMSA003 PM2.5攀藤传感器A0 G10 激光 高精度 测雾霾粉尘 A003 传感器原理图、PCB封装
2020-11-02
炜盛科技红外甲烷传感器MH-440D工业地下管廊CH4燃气检测传感器封装
2020-11-02
stm32f407-my-bsp1.rar
2020-05-04
stm32f103-my-bsp-sht20.rar
2020-01-04
GD32f103内部晶振时钟配置文件.rar
2019-07-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人