stm32(GD32,apm32),开优化后需要特别注意的地方

提到优化就不得不提及 volatile

使用场景
1:中断服务程序中修改的供其它程序检测的变量,需要加volatile; :
2:多任务环境下各任务间共享的标志,应该加volatile;
3:并行设备的硬件寄存器(如:状态寄存器)

还有一种就是今天遇到的查了半天,容易忘记

起因:
使用gd32F103cb来开发,然后采取i2c 协议操作eeprom,
调试eeprom写入的时候如图
在这里插入图片描述
延时2ms,在优化等级为O0的时候没问题,但是在等级为O3的时候经过调试发现,一直无法写入成功,因为我是采取TFDB方式来写入的,还以为移植TFDB出现了问题,最后直接通过调用最底层I2C 写入都失败,

让我们来看下这个延时函数的实现方法如下;
这个是我修改后的,加入了volatile
在这里插入图片描述
就是单纯的空运转,如果不加入关键字就会被优化掉,从而导致上述I2C的协议中延时出问题,最后导致因为协议问题无法写入eeprom。

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

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

相关文章

【Unity-Cinemachine相机】Cinemachine Brain属性详解

在Package Manager中下载Cinemachine 创建一个Virtual Camera,然后会发现Main Camera后面多出了个标志,而且属性也不能再修改了 因为绑定了CinemachineBrain,它会读取场景中某个虚拟相机的配置,并以此配置来控制相机的行为&#x…

【算法】选择排序

选择排序 选择排序代码实现代码优化 排序: 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录&…

[C++学习] 多进程通信共享内存

ref:https://blog.csdn.net/qq_35733751/article/details/82872197 多线程共享进程的地址空间,如果多个线程需要访问同一块内存,用全局变量即可。 在多进程中,每个进程的地址空间是独立的,不共享的,如果多个进程需要访…

Leetcode Top 100 Liked Questions(序号236~347)

236. Lowest Common Ancestor of a Binary Tree 题意:二叉树,求最近公共祖先,All Node.val are unique. 我的思路 首先把每个节点的深度得到,之后不停向上,直到val相同,存深度就用map存吧 但是它没有向…

嵌入式Linux驱动开发(LCD屏幕专题)(二)

一、结合APP分析LCD驱动程序 1、open app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0 -------------------------------------------------------------- kernel:fb_open // fbmem.cstruct fb_info *info;info get_fb_info(fbidx);if (info->fbop…

分布式系统常用的模式

分布式系统常用的模式 Ambassador 名称:“大使”模式 介绍:作为应用程序和其他服务的“中间人”,负责应用程序和其他服务之间的通信,包括日志、监控或重试处理等任务。 举例:K8S使用Envoy作为一个“大使”来简化服务…

【算法】堆排序 详解

堆排序 详解 堆排序代码实现 排序: 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录&#xff0c…

LeetCode每日一题:1123. 最深叶节点的最近公共祖先(2023.9.6 C++)

目录 1123. 最深叶节点的最近公共祖先 题目描述: 实现代码与解析: dfs 原理思路: 1123. 最深叶节点的最近公共祖先 题目描述: 给你一个有根节点 root 的二叉树,返回它 最深的叶节点的最近公共祖先 。 回想一下&…

【网络编程】TCP传输控制协议(Transmission Control Protocol)

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

【FPGA】通俗理解从VGA显示到HDMI显示

注:大部分参考内容来自“征途Pro《FPGA Verilog开发实战指南——基于Altera EP4CE10》2021.7.10(上)” 贴个下载地址: 野火FPGA-Altera-EP4CE10征途开发板_核心板 — 野火产品资料下载中心 文档 hdmi显示器驱动设计与验证 — …

K8S的CKA考试环境和题目

CKA考试这几年来虽然版本在升级,但题目一直没有大的变化,通过K8S考试的方法就是在模拟环境上反复练习,通过练习熟悉考试环境和考试过程中可能遇到的坑。这里姚远老师详细向大家介绍一下考试的环境和题目,需要详细资料的同学请在文…