Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SPI
【求助】驱动ST7789 LCD中遇到的玄学问题,没法定位
发布于 2019-09-18 21:35:12 浏览:3740
订阅该版
[tocm] * 本帖最后由 Mculover666 于 2019-9-18 21:38 编辑 * # 问题背景 - 芯片:STM32L431RCT6 - BSP:自己制作的,还没提交上去 # 问题描述 裸机驱动ST7789 LCD屏幕正常,具体可以参考:[使用硬件SPI驱动TFT-LCD(ST7789)](https://www.mculover666.cn/2019/08/07/2-STM32Cube/【STM32Cube-17】使用硬件SPI驱动TFT-LCD(ST7789)/)。 我将裸机的整个驱动程序复制过来,然后**用RT-Thread提供的设备框架代替了HAL库SPI发送的函数**,别的没有改变,如下: ```c /** * @brief 写命令到LCD * @param cmd —— 需要发送的命令 * @return none */ static rt_err_t LCD_Write_Cmd(const rt_uint8_t cmd) { rt_size_t len; LCD_WR_RS(0); len = rt_spi_send(&spi_dev_st7789, &cmd, 1); if (len != 1) { rt_kprintf("spi write cmd error!
"); return -RT_ERROR; } else { return RT_EOK; } } /** * @brief 写数据到LCD * @param dat —— 需要发送的数据 * @return none */ static rt_err_t LCD_Write_Data(const rt_uint8_t dat) { rt_size_t len; LCD_WR_RS(1); len = rt_spi_send(&spi_dev_st7789, &dat, 1); if (len != 1) { rt_kprintf("spi write dat error!
"); return -RT_ERROR; } else { return RT_EOK; } } ``` 然后我基于这两个底层发送数据的函数,编写了LCD初始化函数,就是发送了一堆初始化LCD的命令,然后清屏。 最后创建了一个动态线程,调用LCD_Init函数: ```c void st7789_example_entry(void* parameter) { LCD_Init(); } int st7789_example(void) { rt_thread_t tid; //线程句柄 tid = rt_thread_create("st7789_example_thread", st7789_example_entry, RT_NULL, 512, 5, 10); if(tid != RT_NULL) { //线程创建成功,启动线程 rt_thread_startup(tid); } return 0; } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(st7789_example, st7789 example); ``` **接下来,玄学问题来了!!!** **启动该线程后,屏幕初始化成功,清屏为绿色,然后所有的命令都可以正常执行,但是`ps`命令和`list_thread`没法执行,执行后就死机了,这个问题,该如何是好,求大佬指教~** ![mark](![FastAdmin](http://mculover666.cn/blog/20190918/npm9MtbgGgE8.png)?imageslim) ![mark](http://mculover666.cn/blog/20190918/eUsF3g7YHsbM.png?imageslim)
查看更多
8
个回答
默认排序
按发布时间排序
tyustli
2019-09-18
这家伙很懒,什么也没写!
不执行 st7789_example 命令会不会死机呢?而且你的 LCD_Init() 函数不是需要循环执行的,为啥要起一个线程呢
shadowliang
2019-09-19
Hello,world!!!
看起来真的很玄学,楼主不如先单独测试玄学的两条指令,然后再执行st7789_example这个指令,定位一下问题是由什么产生的。
Mculover666
2019-09-19
这家伙很懒,什么也没写!
>不执行 st7789_example 命令会不会死机呢?而且你的 LCD_Init() 函数不是需要循环执行的,为啥要起一个线程 ... --- 不执行st7789_example命令一切正常,不会死机;LCD_Init()放到main函数中执行,main函数会爆栈,提示stack overflow
Mculover666
2019-09-19
这家伙很懒,什么也没写!
>看起来真的很玄学,楼主不如先单独测试玄学的两条指令,然后再执行st7789_example这个指令,定位一下问题是 ... --- 如果不执行st7789_example这个线程,那两条命令也是正常的
还没想好
2019-09-19
这家伙很懒,什么也没写!
线程栈小了?将相应的线程栈扩大一倍试试
Mculover666
2019-09-19
这家伙很懒,什么也没写!
>线程栈小了?将相应的线程栈扩大一倍试试 --- 线程栈扩大到1024了都还不行:(
还没想好
2019-09-20
这家伙很懒,什么也没写!
>线程栈扩大到1024了都还不行 --- 扩到到 4K 呢?
james_s
2021-04-14
这家伙很懒,什么也没写!
LCD_Write_Data只能发1字节数据, 增加了函数调用次数, 建议实现一次发多字节数据的接口提高效率. 玄学要么是真的无法解释, 要么是懒得解释, 避免的话得耐心用gdb调试.
撰写答案
登录
注册新账号
关注者
0
被浏览
3.7k
关于作者
Mculover666
这家伙很懒,什么也没写!
提问
10
回答
14
被采纳
0
关注TA
发私信
相关问题
1
BBB的SPI驱动
2
求个SPI上挂两个或多个设备的使用例子
3
SPI设备有个bug
4
spi flash 的fatfs使用一段时间后读写文件出现故障
5
SPI驱动
6
请教rt_spi_configure函数理解
7
SPI FLASH挂载的问题
8
SPI-FLASH 文件系统 SPIFFS
9
求助一个完整的 spi flash 驱动
10
关于同时使用文件系统与SPI FLASH的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
16
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
6
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部