查看: 192|回复: 5
收起左侧

我估计也只能把疑问发这里了,请你们帮解惑

[复制链接]

5

主题

36

帖子

114

积分

中级技术员

 楼主| 发表于 2017-6-6 19:03 | 显示全部楼层 |返回版面||阅读模式
最近用cubeMX生成了一些代码,感觉还是很好用的,但是在用的时候发现一个奇怪的现象。我因为要用到一个全局变量,所以定义到了main的文件头,如下图中示tstv1和tstv2:
此时,程序可以编译并正常运行。

如果这时,在进入while(1)之前,对这个2个变量的任何一个做赋值操作,则,程序会死在箭头所指的子程序里
跟踪后是落到了hardfalut。

如果注释掉这两代码,程序正常运行,

问在cubeMX里如何使用全局的变量?我记得在51里随便怎么写也没有关系啊??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

5

主题

36

帖子

114

积分

中级技术员

 楼主| 发表于 2017-6-7 15:06 | 显示全部楼层 |返回版面
本帖最后由 joymm 于 2017-6-7 15:13 编辑

注释掉那两个oled的子程序,是可以运行的.我在spi里设置的是只发送,硬件nss输出,3M,无中断,polling方式。这些在没有加入全局变量的时候,都运行得很好。那么为什么这二者不能共存??
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

5

主题

36

帖子

114

积分

中级技术员

 楼主| 发表于 2017-6-7 16:12 | 显示全部楼层 |返回版面
另起一个文件,按类似的配置,只要启用了spi发送代码,又有全局变量,程序就挂起了。
如下图中,如果注释掉,赋值语句,程序则能正常运行。


这是什么问题?真的不懂了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

5

主题

36

帖子

114

积分

中级技术员

 楼主| 发表于 2017-6-7 17:25 | 显示全部楼层 |返回版面
基本算是了解,但依然需要解释。
我又起了一个工程,这次用I2c,还是做oled硬件方式的驱动,发现使用全局缓冲区和全局变量没有问题,这里说的全局缓冲区就是HAL_SPI_transmit和HAL_I2C_Master_Transmit里面的参数,是一个发送数据区的指针。
在I2C发送程序里面,都是全局的变量,完全没有问题,程序可以运行。
在SPI发送程序里,则不行,如果把缓冲区改到子程序内部去,也就是申明为局部变量,则程序也可以运行。

我完全不知道这是怎么了,请有条件的朋友试试,是不是我说的这样。
我自己使用的硬件是051的discover板,spi工作在3M,I2c是100k标准速率,都是只发送不接收,阻塞方式。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

13

主题

1111

帖子

3637

积分

中级工程师

发表于 2017-7-13 11:24 | 显示全部楼层 |返回版面
ST的MCU,最好不要用硬件I2C和硬件SPI。里面到处是死循环。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

1

主题

82

帖子

277

积分

中级技术员

发表于 2017-7-13 15:23 | 显示全部楼层 |返回版面
一般全局变量都定义在程序外面,(可以用单独.c程序来定义全局变量),使用时,用(extern)说明是外部变量
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

热门推荐上一条 /2 下一条

分享 快速回复 返回顶部 返回列表