[STM32F1] STM32f103 V3.5 库函数调试USART里面有问题?

[复制链接]
1304|4
 楼主| 摩天轮1111 发表于 2015-7-25 23:38 | 显示全部楼层 |阅读模式
本帖最后由 摩天轮1111 于 2015-7-25 23:44 编辑

1.jpg
如题目所示的,这里采用了软件仿真,把上一个自己写的寄存器的操作改成库函数的操作,设置baud,这里出现问题了,调用了v3.5的库自己带的串口初始化函数,但是结果呢,外设窗口里面,不显示baud,显示invalid,无效,这是为啥,就代码里面的这个寄存器操作的变成了库函数操作就这样结果了,是不是USART int函数,v3.5版本的有什么特别的地方还是有什么别的问题?希望大神能指导一下,这里同时说一下,就baud不出来,但是在UART#1里面却能出来数值,这点很奇怪代码我贴出来,
2.JPG
3.JPG
如上图所示的,我用第一个的库函数的实现方法就不行了,而如果用下面的那个直接操作的baud寄存器和其他的一些寄存器就没有问题,这个是怎么回事呢?求解,谢谢大神
附件在此 5 USART实验 库函数版本.rar (269.66 KB, 下载次数: 1)

 楼主| 摩天轮1111 发表于 2015-7-26 00:44 | 显示全部楼层
5.JPG 6.JPG
找到原因了,上面的那个结构体要是定义一个结构体变量那结果就正确,要是定义一个结构体变量指针,那么就最后的那个baud就不出来东西了,谁能解释一下这个是为什么啊?难道就是因为我没有定义一个结构体变量的原因?但是那个指针指向的位置不就是那个变量?
 楼主| 摩天轮1111 发表于 2015-7-26 01:57 | 显示全部楼层
彻底找到原因了,要这样写才行如果非要用指针的话,这个是c语言的特性,那个结构体变量自身一定要分配个,不然只有指针,那不行的,没有那个结构体变量的自身的,编译器会挂的, QQ图片20150726012026.png
改成这样就好了
至于那个指针和指向的变量要不要定义,我在VC6.0里面做了个实验,写了个小代码
7.JPG
这就属于定义了指针,指向的那个变量不给定义,看看会发生什么
8.JPG
这样的,软件就挂了,这就是用指针时候要注意的小细节,
有时候有些人也许不犯糊,
也许他一辈子也可能遇不到这个问题,
但是有时候遇到这个问题了,他却不知道为啥,那其实就不是懂,是因为他还没遇到过这种问题,我这种人总能让我碰到这种问题,也好,算是自己学习了,小细节没注意到,但是这也是指针运用里面要注意的一个,应该挺多人都没注意这个,因为平时用的时候,都会要这个变量,然后定义指针变量为了操作方便,这里吧,刚刚好这个变量用不着,其实就只是要用这个指针而已,然后就省去了定义变量这一环节,反而是问题出的地方,也谢谢群里这么晚一个和我交流的朋友,给了我启发,是他试了定义变量传地址没问题,还调用了watch观察了变量,我才意识到这个问题,这里谢谢那位兄台。
294479435 发表于 2015-7-26 10:06 | 显示全部楼层
学习了,不过不得不佩服你这精神
小浣熊 发表于 2015-7-26 18:54 | 显示全部楼层
是的,细节很重要的。、、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

224

帖子

15

粉丝
快速回复 在线客服 返回列表 返回顶部