当前位置: 首页 > 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…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...