当前位置: 首页 > news >正文

正点原子STEMWIN死机

在用正点原子STM32F4开发板,搭配对应的button历程时,发现运行一会,button都无法使用了,以为是emwin死机了,但是看到Led还在闪烁,排除系统死机问题。那就是emwin的任务没有运行起来,但是打断点后,仍然可以进入,说明任务也没问题。接着又添加了txt控件,不停的更新显示。这才发现,button不可以可能是触摸屏有问题。在出现问题时,触摸屏那里读取的mode都是0和ff。正常的应该是0x80之类的。 所以基本判定是触摸驱动的问题。然后处理结果如下:

我发现GT9147_RD_Reg(GT_GSTID_REG,&mode,1),没有触点时,多次能读到0xFF(当然还有别的异常值)。用示波器跟踪发现STM32F407发送0x28,GT9147竟然没有ACK。整个波形全是乱的。在CTIIC.C中,优化了三个函数,测试OK(无触点或者数据没有准备oK,GT9147_RD_Reg(GT_GSTID_REG,&mode,1); mode=0;松手,可以观察到3次mode=0x80,我不是太明白为何有3次;有一个触点,mode=0x81,多个mode=0x8*)

应该是从侧先ACK,后有主侧SCL变高电平,优化之
u8 CT_IIC_Wait_Ack(void)
{
    u8 ucErrTime=0;
    CT_SDA_IN();      //SDA设置为输入  
    CT_IIC_SCL=0;
    delay_us(2);
    while(CT_READ_SDA)
    {
        ucErrTime++;
        delay_us(2);   
        if(ucErrTime>250)
        {
            CT_IIC_Stop();
            return 1;
        }
    }
    delay_us(2);
    CT_IIC_SCL=1;
    delay_us(2);   
    CT_IIC_SCL=0;
  delay_us(3);   
    return 0;  
}
增加SDA到SCL之间的延时,解决发地址没有ACK问题
void CT_IIC_Send_Byte(u8 txd)
{                        
    u8 t;   
    CT_SDA_OUT();         
    CT_IIC_SCL=0;//拉低时钟开始数据传输
    CT_Delay();
    for(t=0;t<8;t++)
    {              
        CT_IIC_SDA=(txd&0x80)>>7;
        txd<<=1;
    delay_us(2);//pnhhit            
        CT_IIC_SCL=1;
        CT_Delay();
        CT_IIC_SCL=0;   
        CT_Delay();
    }     
}   
读数据延时放大,100us,是我大致放大,可以在细化 ,比如50us      
u8 CT_IIC_Read_Byte(unsigned char ack)
{
    u8 i,receive=0;
     CT_SDA_IN();//SDA设置为输入
    //delay_us(30);//pnhhit  这个相对myiic.c文件是正点原子他们自己加的,但是我测试还是不够长
    delay_us(100);
    for(i=0;i<8;i++ )
    {
        CT_IIC_SCL=0;               
        CT_Delay();
        CT_IIC_SCL=1;     
        receive<<=1;
        if(CT_READ_SDA)receive++;
    delay_us(1);//pnhhit        
    }                       
    if (!ack)CT_IIC_NAck();//发送nACK
    else CT_IIC_Ack(); //发送ACK   
     return receive;
}

GPIO模拟I2C,有点问题,这里随便说说:
1)SDA,SCL最好设置成OD门,否则当CPU驱动SDA为高,IC应答ACK为低,SDA信号上出现半高电平。
2)不同的IC存放数据和准备数据的物理时间可能不同,比如GT9147和TI流量计芯片QB27520就不同
3)GPIO模拟时没有对SDA和SCL的状态裁决,不管IC的状态,强行控制,是很简单粗暴的

哎,正点原子的例程不能随意放到项目中用,问题太多,不稳定。

相关文章:

正点原子STEMWIN死机

在用正点原子STM32F4开发板&#xff0c;搭配对应的button历程时&#xff0c;发现运行一会&#xff0c;button都无法使用了&#xff0c;以为是emwin死机了&#xff0c;但是看到Led还在闪烁&#xff0c;排除系统死机问题。那就是emwin的任务没有运行起来&#xff0c;但是打断点后…...

PMP考试中的固定答题套路

1、掌握PMBOK 编制的逻辑&#xff08;整范进&#xff0c;成质资&#xff0c;沟风采&#xff0c;相&#xff09; 2、事实求是&#xff0c;项目经理该怎么做就怎么做&#xff0c;不能违背职业道德。 3、PM 做事流程&#xff08;5 步法&#xff09;&#xff1a; ①收集信息&…...

STM32 学习笔记_2 下载,GPIO 介绍

下载 Keil 编译例程 编译两个按钮&#xff0c;一个向下是部分编译&#xff0c;两个向下箭头是全部编译。对于未编译文件两个按钮等效。 点击编译后&#xff0c;linking 是链接&#xff0c;结果里面的几个数据的意义代表大小&#xff1a; 数据类型占用Flash or SRAM说明Code…...

Centos搭建k8s

在CentOS 7上搭建Kubernetes集群 kubeadm官方文档 https://blog.51cto.com/zhangxueliang/4952945 前置步骤&#xff08;所有结点&#xff09; CentOS 7.9 物理机或虚拟机三台&#xff0c;CPU 内核数量大于等于 2&#xff0c;且内存大于等于 4Ghostname 不是 localhost&…...

Flutter Flex(Row Column,Expanded, Stack) 组件

前言 这个Flex 继承自 MultiChildRenderObjectWidget&#xff0c;所以是多子布局组件 class Flex extends MultiChildRenderObjectWidget {} Flex 的子组件就是Row 和 Column , 之间的区别就是Flex 的 direction 设置不同。 它有两个轴&#xff0c;一个是MainAxis 还有一个是交…...

《深入探讨:AI在绘画领域的应用与生成对抗网络》

目录 前言&#xff1a; 一 引言 二 生成对抗网络&#xff08;GAN&#xff09; 1 生成对抗网络&#xff08;GAN&#xff09;简介 2.使用GAN生成艺术作品的实现方法 3,生成图像 三 GAN在艺术创作中的应用 1 风格迁移 2 图像生成&#xff1a; 3 图像修复&#xff1a; 四 使…...

al文章生成-文章生成工具

ai文章生成器 AI文章生成器是一种利用人工智能和自然语言处理技术生成文章的工具。它使用先进的算法、机器学习和深度学习技术&#xff0c;深度挖掘和提取大量数据背后的信息&#xff0c;自主学习并合并新的信息&#xff0c;生成优质、原创的文章。 使用AI文章生成器的优点如下…...

【云原生之Docker实战】使用docker部署webterminal堡垒机

【云原生之Docker实战】使用docker部署webterminal堡垒机 一、webterminal介绍1.webterminal简介2.webterminal特点二、检查本地docker环境1.检查docker版本2.检查操作系统版本3.检查docker状态4.检查docker compose版本三、下载webterminal镜像四、部署webterminal1.创建安装目…...

《低代码PaaS驱动集团企业数字化创新白皮书》-IDC观点

IDC观点 大型集团企业应坚定地走数字化优先发展道路&#xff0c;加深数字化与业务融合 大型企业在长期的经营发展中砥砺前行&#xff0c;形成了较为成熟的业务模式和运营流程&#xff0c;也具备变革 管理等系统性优势。在数字化转型过程中&#xff0c;其庞大的组织架构、复杂的…...

LoRA 指南之 LyCORIS 模型使用

LoRA 指南之 LyCORIS 模型使用 在C站看到这个模型&#xff0c;一眼就非常喜欢 在经历几番挣扎之后终于成功安装 接下来&#xff0c;我们一起开始安装使用吧&#xff01; 1、根据原作大佬的提示&#xff0c;需要安装两个插件 https://github.com/KohakuBlueleaf/a1111-sd-web…...

[C#]IDisposable

在C#中&#xff0c;继承IDisposable接口的主要作用是在使用一些需要释放资源的对象时&#xff0c;可以显式地管理和释放这些资源&#xff0c;以避免内存泄漏和其他潜在问题。 如果一个类继承了IDisposable接口&#xff0c;那么该类就必须实现Dispose方法。在该类的实例不再需要…...

ROS开发之如何使用RPLidar A1二维激光雷达?

文章目录0.引言1.创建工作空间2.获取rplidar_ros包并编译3.检查雷达端口4.启动launch显示雷达扫描结果0.引言 笔者研究课题涉及多传感器融合&#xff0c;除了前期对ROS工具的学习&#xff0c;还需要用雷达获取数据&#xff0c;进行点云处理。虽然激光雷达已经应用很广泛&#x…...

【谷粒商城之JSR303数据校验和集中异常处理】

本笔记内容为尚硅谷谷粒商城JSR303数据校验和集中异常处理部分 目录 一、简介 二、SR303数据校验使用步骤 1、引入依赖 2、给参数对象添加校验注解 常见的注解 3、接口参数前增加Valid 开启校验 三、异常的统一处理 四、分组解决校验 1、创建Groups 2、添加分组 …...

限流算法(计数器、滑动时间窗口、漏斗、令牌)原理以及代码实现

文章目录前言1、计数器&#xff08;固定时间窗口&#xff09;算法原理代码实现存在的问题2、滑动时间窗口算法原理代码实现存在的问题3、漏桶算法原理代码实现存在的问题4、令牌桶算法原理代码实现最后本文会对这4个限流算法进行详细说明&#xff0c;并输出实现限流算法的代码示…...

C++回溯算法---图的m着色问题01

C回溯算法---图的m着色问题 图的m着色问题是指给定一个图以及m种不同的颜色&#xff0c;尝试将每个节点涂上其中一种颜色&#xff0c;使得相邻的节点颜色不相同。这个问题可以转化为在解空间树中寻找可行解的问题&#xff0c;其中每个分支结点都有m个儿子结点&#xff0c;最底层…...

ESP32 分区表

ESP32 分区表 1. 分区表概述 ESP32 针对 flash 进行划分&#xff0c;划分为不同的区域用作不同的功能&#xff0c;并在flash的 0x8000 位置处烧写了一张分区表用来描述分区信息。 分区表可以根据自己的需要进行配置&#xff0c;每一个分区都有其特定的作用&#xff0c;可根据…...

JJJ-2 init_IRQ

void __init init_IRQ(void) {int ret;if (IS_ENABLED(CONFIG_OF) && !machine_desc->init_irq)irqchip_init();else // init_irq成员定义为imx6ul_init_irq&#xff0c;会走这个分支machine_desc->init_irq(); if (IS_ENABLED(CONFIG_OF) && IS_ENABLED…...

【NLP实战】基于Bert和双向LSTM的情感分类【下篇】

文章目录前言简介第一部分关于pytorch lightning保存模型的机制关于如何读取保存好的模型完善测试代码第二部分第一次训练出的模型的过拟合问题如何解决过拟合后记前言 本文涉及的代码全由博主自己完成&#xff0c;可以随意拿去做参考。如对代码有不懂的地方请联系博主。 博主…...

程序设计方法学

体育竞技分析 问题分析 体育竞技分析 需求&#xff1a;毫厘是多少&#xff1f; 如何科学分析体育竞技比赛&#xff1f; 输入&#xff1a;球员的水平 输出&#xff1a;可预测的比赛成绩 体育竞技分析&#xff1a;模拟N场比赛 计算思维&#xff1a;抽象 自动化 模拟&am…...

Hadoop之Yarn篇

目录 ​编辑 Yarn的工作机制&#xff1a; 全流程作业&#xff1a; Yarn的调度器与调度算法&#xff1a; FIFO调度器&#xff08;先进先出&#xff09;&#xff1a; 容量调度器&#xff08;Capacity Scheduler&#xff09;&#xff1a; 容量调度器资源分配算法&#xff1…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...