STM8遇坑[EEPROM读取debug不正常release正常][ STVP下载成功单运行不成功][定时器消抖莫名其妙的跑不通流程]

EEPROM读取debug不正常release正常

这个超级无语,研究和半天,突然发现调到release就正常了,表现为写入看起来正常读取不正常,这个无语了,不想研究了

STVP下载不能够成功运行

本文摘录于:https://blog.csdn.net/qlexcel/article/details/71270780只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人!
在这里插入图片描述
现在我都只用三根线来调试仿真!

定时器消抖莫名其妙的跑不通流程

这里做了一个定时器消抖功能,但是莫名其妙的无语了,竟然跑不通消抖算法,IO中断函数设置标志位:

/*** @brief External Interrupt PORTB Interrupt routine.* @param  None* @retval None*/
INTERRUPT_HANDLER ( EXTI_PORTB_IRQHandler, 4 )
{/* In order to detect unexpected events during development,it is recommended to set a breakpoint on the following instruction.*/if(GPIO_ReadInputPin(KEY_LIGHTN_GPIO,KEY_LIGHTN_PIN)==0){//uart_printf("KEY_LIGHTN Irq\r\n" );key_judge=KEY_TYPE_LIGHTN;}if(GPIO_ReadInputPin(KEY_SWITCHP_GPIO,KEY_SWITCHP_PIN)==0){//uart_printf("KEY_SWITCHP Irq\r\n" );key_judge=KEY_TYPE_SWITCHP;}
}/*** @brief External Interrupt PORTC Interrupt routine.* @param  None* @retval None*/
INTERRUPT_HANDLER ( EXTI_PORTC_IRQHandler, 5 )
{/* In order to detect unexpected events during development,it is recommended to set a breakpoint on the following instruction.*/if(GPIO_ReadInputPin(KEY_LIGHTP_GPIO,KEY_LIGHTP_PIN)==0){//uart_printf("KEY_LIGHTP Irq\r\n" );key_judge=KEY_TYPE_LIGHTP;}if(GPIO_ReadInputPin(KEY_SWITCHN_GPIO,KEY_SWITCHN_PIN)==0){//uart_printf("KEY_SWITCHN Irq\r\n" );key_judge=KEY_TYPE_SWITCHN;}
}/*** @brief External Interrupt PORTD Interrupt routine.* @param  None* @retval None*/
INTERRUPT_HANDLER ( EXTI_PORTD_IRQHandler, 6 )
{/* In order to detect unexpected events during development,it is recommended to set a breakpoint on the following instruction.*/if(GPIO_ReadInputPin(KEY_OnOff_GPIO,KEY_OnOff_PIN)==0){//uart_printf("KEY_OnOff Irq\r\n" );key_judge=KEY_TYPE_OnOff;}
}

定时器中断设置标志位,然后在while主循环调用消抖函数:

// 定时器 20ms
void TIMER_Initializes( void )
{TIM2_TimeBaseInit( TIM2_PRESCALER_16, 20000 ); TIM2_ClearFlag( TIM2_FLAG_UPDATE );            //清除标志位TIM2_ITConfig( TIM2_IT_UPDATE, ENABLE );       //使能更新UPDATE中断enableInterrupts();                       //使能全局中断TIM2_SetCounter( 0 );                          //计数值归零TIM2_Cmd( ENABLE );                            //启动定时器
}
uint16_t _ticks = 0;
INTERRUPT_HANDLER ( TIM2_UPD_OVF_BRK_IRQHandler, 13 )
{/* In order to detect unexpected events during development,it is recommended to set a breakpoint on the following instruction.*/TIM2_ClearITPendingBit ( TIM2_IT_UPDATE );     //清除中断标志_ticks++;timer_bit_flag.timer20ms_flag = 1;if ( _ticks % 25 == 0 ){timer_bit_flag.timer500ms_flag = 1;}else if ( _ticks % 50 == 0 ){timer_bit_flag.timer1000ms_flag = 1;}
}
void main ( void )
{uint8_t uart_rec_len;CLK_DeInit();CLK_LSICmd ( ENABLE );CLK_HSICmd ( ENABLE );while ( SET != CLK_GetFlagStatus ( CLK_FLAG_HSIRDY ) );CLK_SYSCLKConfig ( CLK_PRESCALER_CPUDIV1 );CLK_HSIPrescalerConfig ( CLK_PRESCALER_HSIDIV1 ); //HSI = 16M (1分频)GPIO_Configuration();TIMER_Initializes();UART_Initializes();//ADC_Initializes();eeprom_init();timer1_init();enableInterrupts();                       //使能全局中断if(g_config.PowerOff){rgb_SetCompare(0,0,0);uart_printf("Device PowerOff\r\n");}while ( 1 ){if ( timer_bit_flag.timer20ms_flag == 1 ){timer_bit_flag.timer20ms_flag = 0;user_timer_handler();}

消抖函数处理完成后调用key_handle函数进行处理,这里出现一个莫名其妙的问题,竟然没有进入下面的语句清除变量,无语了,我的天了,老哥撸代码十来年,搞了大半天,投降了,最后用了在中断中直接进行定时器消抖,无语了!记录再次,以后如果悟到了再来改

int8_t key_state_read(void) 
{switch(key_judge){case KEY_TYPE_LIGHTP:if(GPIO_ReadInputPin(KEY_LIGHTP_GPIO,KEY_LIGHTP_PIN)==0) return ((uint8_t)KEY_TYPE_LIGHTP);else return 0;case KEY_TYPE_LIGHTN:if(GPIO_ReadInputPin(KEY_LIGHTN_GPIO,KEY_LIGHTN_PIN)==0) return ((uint8_t)KEY_TYPE_LIGHTN);else return 0;case KEY_TYPE_SWITCHP:if(GPIO_ReadInputPin(KEY_SWITCHP_GPIO,KEY_SWITCHP_PIN)==0) return ((uint8_t)KEY_TYPE_SWITCHP);else return 0;case KEY_TYPE_SWITCHN:if(GPIO_ReadInputPin(KEY_SWITCHN_GPIO,KEY_SWITCHN_PIN)==0) return ((uint8_t)KEY_TYPE_SWITCHN);else return 0;case KEY_TYPE_OnOff:if(GPIO_ReadInputPin(KEY_OnOff_GPIO,KEY_OnOff_PIN)==0) return ((uint8_t)KEY_TYPE_OnOff);else return 0;default:return 0;}}
void user_timer_handler(void) 
{if(key_judge!=KEY_TYPE_IDLE){if(key_state_read()!=0){		key_loop++;if(key_loop==100){//uart_printf("loop long\r\n");key_handle(key_judge,KEY_ACTION_LONG);key_loop=0;key_judge=KEY_TYPE_IDLE;}}else{if((key_loop>=1)&&(key_loop<100)){		key_handle(key_judge,KEY_ACTION_SHORT);}key_loop=0;//没有进入这里清除变量key_judge=KEY_TYPE_IDLE;}   }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/45486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GEEMAP 中如何拉伸图像

图像拉伸是最基础的图像增强显示处理方法&#xff0c;主要用来改善图像显示的对比度&#xff0c;地物提取流程中往往首先要对图像进行拉伸处理。图像拉伸主要有三种方式&#xff1a;线性拉伸、直方图均衡化拉伸和直方图归一化拉伸。 GEE 中使用 .sldStyle() 的方法来进行图像的…

8.5.tensorRT高级(3)封装系列-基于生产者消费者实现的yolov5封装

目录 前言1. yolov5封装总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 高级-基于生产者消费者实现的yolov5封装…

postgresql中基础sql查询

postgresql中基础sql查询 创建表插入数据创建索引删除表postgresql命令速查简单查询计算查询结果 利用查询条件过滤数据模糊查询 创建表 -- 部门信息表 CREATE TABLE departments( department_id INTEGER NOT NULL -- 部门编号&#xff0c;主键, department_name CHARACTE…

CentOS6.8图形界面安装Oracle11.2.0.1.0

Oracle11下载地址 https://edelivery.oracle.com/osdc/faces/SoftwareDelivery 一、环境 CentOS release 6.8 (Final)&#xff0c;测试环境&#xff1a;内存2G&#xff0c;硬盘20G&#xff0c;SWAP空间4G Oracle版本&#xff1a;Release 11.2.0.1.0 安装包&#xff1a;V175…

Lookup Singularity

1. 引言 Lookup Singularity概念 由Barry WhiteHat在2022年11月在zkResearch论坛 Lookup Singularity中首次提出&#xff1a; 其主要目的是&#xff1a;让SNARK前端生成仅需做lookup的电路。Barry预测这样有很多好处&#xff0c;特别是对于可审计性 以及 形式化验证&#xff…

【学习FreeRTOS】第8章——FreeRTOS列表和列表项

1.列表和列表项的简介 列表是 FreeRTOS 中的一个数据结构&#xff0c;概念上和链表有点类似&#xff0c;列表被用来跟踪 FreeRTOS中的任务。列表项就是存放在列表中的项目。 列表相当于链表&#xff0c;列表项相当于节点&#xff0c;FreeRTOS 中的列表是一个双向环形链表列表的…

微软Win11 Dev预览版Build23526发布

近日&#xff0c;微软Win11 Dev预览版Build23526发布&#xff0c;修复了不少问题。牛比如斯Microsoft&#xff0c;也有这么多bug&#xff0c;所以你写再多bug也不作为奇啊。 主要更新问题 [开始菜单&#xff3d; 修复了在高对比度主题下&#xff0c;打开开始菜单中的“所有应…

Spring Boot通过企业邮箱发件被Gmail退回的解决方法

这两天给我们开发的Chrome插件&#xff1a;Youtube中文配音 增加了账户注册和登录功能&#xff0c;其中有一步是邮箱验证&#xff0c;所以这边会在Spring Boot后台给用户的邮箱发个验证信息。如何发邮件在之前的文章教程里就有&#xff0c;这里就不说了&#xff0c;着重说说这两…

通过 kk 创建 k8s 集群和 kubesphere

官方文档&#xff1a;多节点安装 确保从正确的区域下载 KubeKey export KKZONEcn下载 KubeKey curl -sfL https://get-kk.kubesphere.io | VERSIONv3.0.7 sh -为 kk 添加可执行权限&#xff1a; chmod x kk创建 config 文件 KubeSphere 版本&#xff1a;v3.3 支持的 Kuber…

Linux 安全技术和防火墙

目录 1 安全技术 2 防火墙 2.1 防火墙的分类 2.1.1 包过滤防火墙 2.1.2 应用层防火墙 3 Linux 防火墙的基本认识 3.1 iptables & netfilter 3.2 四表五链 4 iptables 4.2 数据包的常见控制类型 4.3 实际操作 4.3.1 加新的防火墙规则 4.3.2 查看规则表 4.3.…

企事业数字培训及知识库平台

前言 随着信息化的进一步推进&#xff0c;目前各行各业都在进行数字化转型&#xff0c;本人从事过医疗、政务等系统的研发&#xff0c;和客户深入交流过日常办公中“知识”的重要性&#xff0c;再加上现在倡导的互联互通、数据安全、无纸化办公等概念&#xff0c;所以无论是企业…

打家劫舍 II——力扣213

动规 int robrange(vector<int>& nums, int start, int end){int first=nums[start]

CountDownLatch和CyclicBarrie

前置提要 什么是闭锁对象 闭锁对象&#xff08;Latch Object&#xff09;是一种同步工具&#xff0c;用于控制线程的等待和执行顺序。闭锁对象可以让一个或多个线程等待&#xff0c;直到特定的条件满足后才能继续执行。 在Java中&#xff0c;CountDownLatch就是一种常见的闭锁对…

STC15单片机PM2.5空气质量检测仪

一、系统方案 本设计采用STC15单片机作为主控制器&#xff0c;PM2.5传感器、按键设置&#xff0c;液晶1602显示&#xff0c;蜂鸣器报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化&#xff1a; void lcd_init()//液晶初始化设置 { de…

SQLite数据库实现数据增删改查

当前文章介绍的设计的主要功能是利用 SQLite 数据库实现宠物投喂器上传数据的存储&#xff0c;并且支持数据的增删改查操作。其中&#xff0c;宠物投喂器上传的数据包括投喂间隔时间、水温、剩余重量等参数。 实现功能&#xff1a; 创建 SQLite 数据库表&#xff0c;用于存储宠…

第一讲:BeanFactory和ApplicationContext接口

BeanFactory和ApplicationContext接口 1. 什么是BeanFactory?2. BeanFactory能做什么&#xff1f;3.ApplicationContext对比BeanFactory的额外功能?3.1 MessageSource3.2 ResourcePatternResolver3.3 EnvironmentCapable3.4 ApplicationEventPublisher 4.总结 1. 什么是BeanF…

解决C#报“MSB3088 未能读取状态文件*.csprojAssemblyReference.cache“问题

今天在使用vscode软件C#插件&#xff0c;编译.cs文件时&#xff0c;发现如下warning: 图(1) C#报cache没有更新 出现该warning的原因&#xff1a;当前.cs文件修改了&#xff0c;但是其缓存文件*.csprojAssemblyReference.cache没有更新&#xff0c;需要重新清理一下工程&#x…

【机器学习实战】朴素贝叶斯:过滤垃圾邮件

【机器学习实战】朴素贝叶斯&#xff1a;过滤垃圾邮件 0.收集数据 这里采用的数据集是《机器学习实战》提供的邮件文件&#xff0c;该文件有ham 和 spam 两个文件夹&#xff0c;每个文件夹中各有25条邮件&#xff0c;分别代表着 正常邮件 和 垃圾邮件。 这里需要注意的是需要…

【校招VIP】java语言考点之List和扩容

考点介绍&#xff1a; List是最基础的考点&#xff0c;但是很多同学拿不到满分。本专题从两种实现子类的比较&#xff0c;到比较复杂的数组扩容进行分析。 『java语言考点之List和扩容』相关题目及解析内容可点击文章末尾链接查看&#xff01;一、考点题目 1、以下关于集合类…

vue技术学习

vue快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vue快速入门</title> </head> <body> <!--老师解读 1. div元素不是必须的&#xff0c;也可以是其它元素&#xff0…