记录GD32E230的一个问题,笔者这几天正在使用GD32E230xx替换STM32F031xx,下载GD工程后IAR仿真堆栈告警thestackpointerforstackCSTACK(currently0x00000000)isoutsidethestackrange(0x20000008to0x20000408),且临时变量的值也不对,可以看第一张图后来请教了GD的FAE,很快就解决了这个问题解决方法为:将GD的IAR插件由IAR_GD32E23x_AddOn_V1.0.0更新为IAR_GD32E23x_ADDON.2.2.0即可,由图2看。
1、c语言stm32问题#defineBank1_LCD_C((uint32_t)0x)0x地址是一个无符号32位数,(__IOuint16_t*)(Bank1_LCD_C)将0x地址转换成指向一个类型为__IOuint16_t的指针。*(__IOuint16_t*)括号前面的*号是取值。(u32*)(00.)表示取这个地址所存储的内容,前面的u32表示该内容代表一个无符号的32位数值。
2、stm32怎么把函数用变量控制这个_IO是指静态这个_IO是指静态volatileuint32_t是指32位的无符号整形变量uint32_t是指32位的无符号整形变量;搞stm32这么久了,经常看到stm32里面库文件里面有用“_IO”定义的变量,查过一下当时记住了,过段时间又给忘记了。所以才特意的写一个博文来记住。volatilevolatile类型是这样的,其数据确实可能在未知的情况下发生变化。
另外,比如共享的内存地址,多个程序都对它操作的时候。你的程序并不知道,这个内存何时被改变了。如果不加这个voliatile修饰,程序是利用catch当中的数据,那个可能是过时的了,加了voliatile,就在需要用的时候,程序重新去那个地址去提取,保证是最新的。
3、stm32定义全局变量的问题是什么?extern声明外部变量的时候不能初始化。3.0以后的版本中使用了CMSIS数据类型,变量的定义有所不同,但是出于兼容旧版本的目的,以上的数据类型仍然兼容,CMSIS的IO类型限定词如表5‑7所示,CMSIS和STM32固件库的数据类型对比如下图所示:这些数据类型可以在STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h中找到具体的定义。