打印
[STM32F1]

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

[复制链接]
1067|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 摩天轮1111 于 2015-7-25 23:44 编辑


如题目所示的,这里采用了软件仿真,把上一个自己写的寄存器的操作改成库函数的操作,设置baud,这里出现问题了,调用了v3.5的库自己带的串口初始化函数,但是结果呢,外设窗口里面,不显示baud,显示invalid,无效,这是为啥,就代码里面的这个寄存器操作的变成了库函数操作就这样结果了,是不是USART int函数,v3.5版本的有什么特别的地方还是有什么别的问题?希望大神能指导一下,这里同时说一下,就baud不出来,但是在UART#1里面却能出来数值,这点很奇怪代码我贴出来,


如上图所示的,我用第一个的库函数的实现方法就不行了,而如果用下面的那个直接操作的baud寄存器和其他的一些寄存器就没有问题,这个是怎么回事呢?求解,谢谢大神
附件在此 5 USART实验 库函数版本.rar (269.66 KB)

沙发
摩天轮1111|  楼主 | 2015-7-26 00:44 | 只看该作者

找到原因了,上面的那个结构体要是定义一个结构体变量那结果就正确,要是定义一个结构体变量指针,那么就最后的那个baud就不出来东西了,谁能解释一下这个是为什么啊?难道就是因为我没有定义一个结构体变量的原因?但是那个指针指向的位置不就是那个变量?

使用特权

评论回复
板凳
摩天轮1111|  楼主 | 2015-7-26 01:57 | 只看该作者
彻底找到原因了,要这样写才行如果非要用指针的话,这个是c语言的特性,那个结构体变量自身一定要分配个,不然只有指针,那不行的,没有那个结构体变量的自身的,编译器会挂的,
改成这样就好了
至于那个指针和指向的变量要不要定义,我在VC6.0里面做了个实验,写了个小代码

这就属于定义了指针,指向的那个变量不给定义,看看会发生什么

这样的,软件就挂了,这就是用指针时候要注意的小细节,
有时候有些人也许不犯糊,
也许他一辈子也可能遇不到这个问题,
但是有时候遇到这个问题了,他却不知道为啥,那其实就不是懂,是因为他还没遇到过这种问题,我这种人总能让我碰到这种问题,也好,算是自己学习了,小细节没注意到,但是这也是指针运用里面要注意的一个,应该挺多人都没注意这个,因为平时用的时候,都会要这个变量,然后定义指针变量为了操作方便,这里吧,刚刚好这个变量用不着,其实就只是要用这个指针而已,然后就省去了定义变量这一环节,反而是问题出的地方,也谢谢群里这么晚一个和我交流的朋友,给了我启发,是他试了定义变量传地址没问题,还调用了watch观察了变量,我才意识到这个问题,这里谢谢那位兄台。

使用特权

评论回复
地板
294479435| | 2015-7-26 10:06 | 只看该作者
学习了,不过不得不佩服你这精神

使用特权

评论回复
5
小浣熊| | 2015-7-26 18:54 | 只看该作者
是的,细节很重要的。、、

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

224

帖子

15

粉丝