STM32开发板和上位机通信STM32出现死机问题

项目场景:

`
想使用matlab做一个上位机,实现与下位机的通信的功能,但是最终发现在使用虚拟串口调试时上位机正常,使用串口助手与开发板通信时,也能正常发送数据,但是使用上位机与开发板通信时,只要一打开上位机串口,开发板程序就会出现卡死的现象。


问题描述

`
上位机与开发板通信时,打开上位机串口按钮,下位机开发板出现卡死现象。即使复位也不能正常运行。


原因分析:

由于开发板上有一键下载电路,可能是电路和上位机有什么冲突导致传输数据时卡死,或者说是和板载的CH340部分电路存在冲突,可以做一个实验,把开发板上的ch340与串口1断开,然后打开上位机串口依然会出现程序卡死的问题,这个时候上位机与下位机之间并没有进行数据的传输。


解决方案:

可以直接使用单独的串口转USB模块与上位机进行通信,不使用板载的CH340电路部分。这样不用经过中间多余的电路,传输数据时就不会出现卡死问题。类似的问题还有很多,比如STM32F4的下载器不能同时接NRF24L01(这个问题主要在于端口占用的问题)
https://blog.csdn.net/dudiansong/article/details/119440097

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是在Windows上编译和使用cjson库的步骤: 1. 下载cjson库的源代码,可以从官方网站上下载,或者从GitHub上下载。 2. 安装MinGW-w64,这是一个Windows平台下的GNU编译器套件,可以用于编译cjson库。 3. 将MinGW-w64的安装路径添加到系统环境变量中,例如将C:\MinGW-w64\mingw64\bin添加到系统环境变量的Path变量中。 4. 打开命令提示符窗口,进入cjson库源代码所在的目录。 5. 在命令提示符窗口中输入以下命令,编译cjson库: ``` gcc -c cjson.c ar rcs libcjson.a cjson.o ``` 第一条命令是编译cjson.c文件,生成cjson.o目标文件;第二条命令是将cjson.o目标文件打包成静态库文件libcjson.a。 6. 编译完成后,在cjson库源代码所在的目录下会生成libcjson.a静态库文件。 7. 在需要使用cjson库的代码中,包含cjson.h头文件,并链接libcjson.a静态库文件。例如: ``` #include <stdio.h> #include "cjson.h" int main() { cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "John"); char *json_str = cJSON_Print(root); printf("%s\n", json_str); cJSON_Delete(root); return 0; } ``` 在编译时,需要指定libcjson.a静态库文件的路径和名称,例如: ``` gcc -o test test.c -L. -lcjson ``` 这里假设test.c是包含上述代码的文件,-L.指定静态库文件的路径为当前目录,-lcjson指定要链接的静态库文件为libcjson.a。 8. 运行编译后的可执行文件,即可使用cjson库。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值