打印
[STM32F1]

请教个奇怪的问题

[复制链接]
2755|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aaaxmaaa007|  楼主 | 2013-11-30 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32f103 rct
问题描述:
1.我将pb1引脚配置成,定时器输出脉冲,作为另外两个硬件SPI3和SPI2的时钟信号,
2.SPI2和3都用到了DMA通道,将内存中的数据送到SPI的数据寄存器
3.IAR6.4仿真时,定时器的输出高电平只有2V,以至于SPI2的DMA能正常工作,而SPI3的DMA不能正常工作,
4.当我停止仿真,直接download到板子上运行时,定时器的输出高电平能达到3.3V,spi2和spi3也能正常工作
请高人指点下,不甚感激!
沙发
戈卫东| | 2013-11-30 12:31 | 只看该作者
输出2V时电源电压多少?

使用特权

评论回复
板凳
aaaxmaaa007|  楼主 | 2013-11-30 12:42 | 只看该作者
MCU电源的电压是正常的3.3V

使用特权

评论回复
地板
aaaxmaaa007|  楼主 | 2013-11-30 15:11 | 只看该作者
置顶下:)

使用特权

评论回复
5
aaaxmaaa007|  楼主 | 2013-11-30 22:35 | 只看该作者
再次置顶

使用特权

评论回复
6
122541325| | 2013-12-1 21:55 | 只看该作者
怎么说呢,我也有个奇怪问题,都是同款STM32F4系列的,就引脚不同,下载相同的程序,两块板子执行的速度会不一样。
你这问题,我没遇到过,因为学长们说,用软件仿真不是很靠谱,所以就没怎么用过软件仿真

使用特权

评论回复
7
aaaxmaaa007|  楼主 | 2013-12-2 10:00 | 只看该作者
122541325 发表于 2013-12-1 21:55
怎么说呢,我也有个奇怪问题,都是同款STM32F4系列的,就引脚不同,下载相同的程序,两块板子执行的速度会 ...

仿真调试也是download到板子上运行的,而并非纯软件仿真。其实仿真调试也没什么不靠谱的,不仿真调试,不查看寄存器内存什么的,怎么写程序?

使用特权

评论回复
8
Rain_King| | 2013-12-2 10:08 | 只看该作者
aaaxmaaa007 发表于 2013-12-2 10:00
仿真调试也是download到板子上运行的,而并非纯软件仿真。其实仿真调试也没什么不靠谱的,不仿真调试,不 ...

在线调试程序......程序小还好说...程序一大,调试个毛线啊....特别对于有些芯片有时序要求的,几乎没用啊........

使用特权

评论回复
9
aaaxmaaa007|  楼主 | 2013-12-2 13:41 | 只看该作者
Rain_King 发表于 2013-12-2 10:08
在线调试程序......程序小还好说...程序一大,调试个毛线啊....特别对于有些芯片有时序要求的,几乎没用 ...

那请问你平时是怎么调试程序的?

使用特权

评论回复
10
122541325| | 2013-12-2 13:58 | 只看该作者
aaaxmaaa007 发表于 2013-12-2 10:00
仿真调试也是download到板子上运行的,而并非纯软件仿真。其实仿真调试也没什么不靠谱的,不仿真调试,不 ...

刚开始写程序使用寄存器写,但是到后来肯定用库函数来写呀

使用特权

评论回复
11
Rain_King| | 2013-12-2 14:33 | 只看该作者
aaaxmaaa007 发表于 2013-12-2 13:41
那请问你平时是怎么调试程序的?

调试就是用来检测自己程序的某些变量的值,或者看是否运行到了哪一个地步.....如果有显示屏,那就把重要的值用显示屏显示出来,如果没有,就测量脚,将一个脚用来作为测试呗,不过脚测试的能力有限,一般用来测试运行到哪一步.....

使用特权

评论回复
12
aaaxmaaa007|  楼主 | 2013-12-2 23:28 | 只看该作者
122541325 发表于 2013-12-2 13:58
刚开始写程序使用寄存器写,但是到后来肯定用库函数来写呀

库函数不还是寄存器

使用特权

评论回复
13
aaaxmaaa007|  楼主 | 2013-12-2 23:29 | 只看该作者
Rain_King 发表于 2013-12-2 14:33
调试就是用来检测自己程序的某些变量的值,或者看是否运行到了哪一个地步.....如果有显示屏,那就把重要 ...

不敢苟同

使用特权

评论回复
14
aaaxmaaa007|  楼主 | 2013-12-2 23:41 | 只看该作者
Rain_King 发表于 2013-12-2 14:33
调试就是用来检测自己程序的某些变量的值,或者看是否运行到了哪一个地步.....如果有显示屏,那就把重要 ...

如果程序跑飞了,你能通过什么脚测量出来呢?串口是可以将跑飞时的寄存器值发送出来,但终究还是得用到寄存器,内存的数据才能找到问题。充分了解CPU和外设的寄存器,以及存储器map写程序和调程序都是十分必要的

使用特权

评论回复
15
aaaxmaaa007|  楼主 | 2013-12-2 23:46 | 只看该作者
结贴吧。。。

使用特权

评论回复
16
hkcj| | 2013-12-3 07:52 | 只看该作者
问题解决了就好    顶一个

使用特权

评论回复
17
Rain_King| | 2013-12-3 08:15 | 只看该作者
aaaxmaaa007 发表于 2013-12-2 23:41
如果程序跑飞了,你能通过什么脚测量出来呢?串口是可以将跑飞时的寄存器值发送出来,但终究还是得用到寄 ...

程序跑飞...不是还有看门狗么.....再说了,一个功能一个功能测试,准会行....你是没有调试过大程序吧...几千行甚至上万的...功能太多,而且有些功能有时序要求和触发要求...在线调试,我勒个擦,那就是要命...我情愿选择我原来的方法调试...至少效果妥妥的.....

使用特权

评论回复
18
aaaxmaaa007|  楼主 | 2013-12-3 08:29 | 只看该作者
Rain_King 发表于 2013-12-3 08:15
程序跑飞...不是还有看门狗么.....再说了,一个功能一个功能测试,准会行....你是没有调试过大程序吧... ...

几千行上万行的也能叫大程序啊,我是没调过什么大程序,不过stm32能装下什么大程序呢?不过编译出来几M的程序还是调过的

使用特权

评论回复
19
Rain_King| | 2013-12-3 08:44 | 只看该作者
aaaxmaaa007 发表于 2013-12-3 08:29
几千行上万行的也能叫大程序啊,我是没调过什么大程序,不过stm32能装下什么大程序呢?不过编译出来几M的 ...

我知道stm32可以跑unix系统,对于一个你在别人系统上加自己的功能当然不需要有太多的考虑....我指的是全部是自己写的,包括程序的框架啊,任务处理的时间安排啊,定时器的使用啊等等很多方面都是你需要考虑的时候,当你写上几千上万行的时候,你就知道我指的是不是大程序了.....当然对于unix系统几百万,上千万级别的,我们写的当然是九牛一毛,甚至连一毛也不算....

使用特权

评论回复
20
Rain_King| | 2013-12-3 08:48 | 只看该作者
aaaxmaaa007 发表于 2013-12-3 08:29
几千行上万行的也能叫大程序啊,我是没调过什么大程序,不过stm32能装下什么大程序呢?不过编译出来几M的 ...

当然我说这么多,并没有其他意思,我所表达的是:所有的程序的调试都应该讲大模块分成小模块来调试,最好是能够检测重要变量值得变化....方法有很多,重要的是能够找到适合自己的....我的也只是我目前所使用的,说不定以后也会变......

使用特权

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

本版积分规则

11

主题

66

帖子

0

粉丝