STM32 变量无法赋值问题

发布者:初入茅庐最新更新时间:2020-09-18 来源: eefocus关键字:STM32  变量  无法赋值 手机看文章 扫描二维码
随时随地手机看文章

STM32 在用JLink 调试的时候发现有一条将unsigned char赋值给int的语句始终不能执行,int类型变量的值始终为0;


查资料找到这个问题是编译器优化的原因,也就是说由于编译器优化,赋值语句始终没有执行;


解决办法:

在变量声明前加 volatile 修饰即可,这样就能保证赋值语句不会被编译器优化

关键字:STM32  变量  无法赋值 引用地址:STM32 变量无法赋值问题

上一篇:fatfs文件系统f_lseek追加文件
下一篇:keil写STM32程序出现literal treated as "long long"

推荐阅读最新更新时间:2024-11-09 16:12

STM32】HAL库-CRC校验
CRC 循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任一32位全字的CRC计算结果。 使用CRC-32(以太网)多项式:0x4C11DB7 CRC计算单元含有1个32位数据寄存器: 对该寄存器进行写操作时,作为输入寄存器,可以输入要进行CRC计算的新数据。 对该寄存器进行读操作时,返回上一次CRC计算的结果。 每一次写入数据寄存器,其计算结果是前一次CRC计算结果和新计算结果的组合(对整个32位字进行CRC计算,而不是逐字节地计算)。 在CRC计算期间会暂停CPU的写操作,因此可以对寄存器CRC_DR进行背靠背写入或者连续地写-读操作。 可以通过设置寄存器CRC_CR的RESET位来重置寄存器CRC
[单片机]
【<font color='red'>STM32</font>】HAL库-CRC校验
浅谈STM32芯片行丝印含义,固件库命名规则及三大结构发展图示
STM32芯片上的5行丝印 1、ARM代表ARM内核,ARM后面跟着的是 X,代表芯片版本 内核是不变的 只是ST的版本 X是最终版本,就是以后这个型号就不会再升级了,有数字的代理以后还可以升级 2/3、第二行和第三行是型号 4、原厂出厂编号 5、MYS是马来西亚封装产地,641是代表2016年41周生产的 CHN是国内封装产地 STM32固件库命名规则 1、系统文件名和源文件名以‘ stm32f10x_’的形式表示。 2、在单一文件中使用的常量在该文件中定义。在多个文件中使用的常量定义在头文件中。所有常量都以大写字母表示。 3、寄存器当做常量看待,同样以大写字母表示,多数情况下,在STM3210X参考手册中使用相同的缩写
[单片机]
浅谈<font color='red'>STM32</font>芯片行丝印含义,固件库命名规则及三大结构发展图示
stm32必须要移植系统吗
STM32是意法半导体(STMicroelectronics)推出的一系列32位ARM Cortex-M微控制器(MCU),其采用了先进的嵌入式技术,广泛应用于各种领域,如消费电子、工业控制、汽车电子等。在使用STM32进行开发时,是否需要进行系统移植是一个常见的问题。 系统移植是指将操作系统或者驱动程序从一个硬件平台移植到另一个硬件平台的过程。由于不同的硬件平台可能存在差异,例如处理器架构、外设接口等,因此需要对原有的系统进行适配和修改,使其能够在目标硬件上运行。 对于STM32来说,系统移植不是必须的。STM32系列芯片本身具备了强大的硬件支持和完善的开发工具链,可以直接在裸机环境下进行开发和调试。裸机开发是指在没有操
[单片机]
STM32基础1--STM32CubeMx项目配置
1.0:选择STM芯片 启动STM32CubeMx之后,点击File- New Project ,本人使用的是正点原子探索者STM32F407的开发版,因此在搜索栏输入芯片STM32F407ZGT6,然后双击,然后完成新建项目。 注:如果不知道开发板的芯片,可以查看供应商给的原理图或者直接看芯片的标识,建议最好看直接看芯片的标识。 2.0:设置RCC 3.0:设置SYS 注:在BUG里面有很多选项,根据自己开发板的接口选择,由于SWD(Serial Wire Debug)接线简单,现在市场的上开发板基本都是由于这个接口。 4.0:硬件配置 正点原子探索者开发板中,有两个LED与4个按
[单片机]
<font color='red'>STM32</font>基础1--STM32CubeMx项目配置
STM32之独立看门狗实验
实验现象: 开始LED1亮,LED2熄灭,若不隔时间按KEY1则发现LED2因独立看门狗的作用使系统复位而不断闪烁,若间断的按KEY1则发现LED2不会闪烁,表明没有复位。 实验平台: 基于STM32F103C8T6的彩屏开发板 操作步骤: 1)向IWDG_KR 写入0X5555。 通过这步,我们取消IWDG_PR 和IWDG_RLR 的写保护,使后面可以操作这两个寄存器。 设置 IWDG_PR 和IWDG_RLR 的值。 这两步设置看门狗的分频系数,和重装载的值。由此,就可以知道看门狗的喂狗时间(也 就是看门狗溢出时间),该时间的计算方式为: Tout=((4×2^prer) ×rlr) /40 其中Tout 为看门狗溢
[单片机]
STM32串口发送字符串的几种写法
STM32用USART发送字符串 代码含义是: 当接收引脚有数据时,状态寄存器的USART_FLAG_RXNE就会为1,此时USART_GetFlagStatus(USART1,USART_FLAG_RXNE)的返回值就为1(SET),若无数据则为RESET。 代码常见写法,及其接收数据效果 1 这种写法在不是特殊(不掉电、不待机等)情况下,问题不大,USART数据会成功发送出去。但是在上面说的特殊情况下,问题就来了,代码只将数据放到了发送缓冲区,而没有发送出去就掉电或待机了,这个时候其实最后两个字符是没有发送出去的。 2 这种写法达到的效果和上面存在不同的就是倒数第二个数据发送出去了,也就是只有最后一个字
[单片机]
<font color='red'>STM32</font>串口发送字符串的几种写法
基于STM32物联网开发板(2)--语音播报SYN6288
1.SYN6288简介 SYN6288-A语音合成模块是一款性价比更高,效果更自然的一款中高端语音合技术 。 SYN6288-A通过异步串口接收待合成的文本,实现文本到声音(TTS)的转换。 国内首款语音合成评估板SYN6288-A的推出继承了OSYNO6188-A模块的优秀特点:最小体积,硬件接口简单,极高的性价比;除此之外,SYN6288-A文本识别更智能,语音合成更自然,语音合成效果和智能识别效果大幅度提高,是一款面向中高端应用领域的语音合技术。 1.1产品应用范围 ◆ 车载信息终端语音播报,车载调度,车载导航 ◆ 公交报站器,考勤机 ◆ 排队叫号机,收银收费机 ◆ 自动售货机,信息机,POS机 ◆ 智能玩具,智能手表
[单片机]
基于<font color='red'>STM32</font>物联网开发板(2)--语音播报SYN6288
STM32自锁如何解锁?(解锁方法)
在芯片锁住的时候,我们首先要查看是那种错误, 正常情况下,你在Keil下载时遇到错误应该是这样的 找不到Cortex™-M内核 Flash下载失败 打开J-Link-Commander 如果是正常,则是可以找到Cortex-M3/M4内核, 如果芯片自锁之后,会发现先是JTAG方式查找,之后SWD方式查找,最后找不到任何内核 以下问题为J-LINK能找到芯片时的异常错误: BOOT脚配置问题:对于STM32往往都有些BOOT配置脚。因为BOOT脚的焊接或接触不良或者BOOT引脚没有配置正确**,导致很多问题。这种情况多表现在芯片功能时好时坏,或者部分芯片正常,部分芯片异常。 启动文件问题:经常因为选错了启动文件,导
[单片机]
<font color='red'>STM32</font>自锁如何解锁?(解锁方法)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved