打印

对于生手来说,ST提供的GPIO这个sample够害人的

[复制链接]
16726|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
McuPlayer|  楼主 | 2008-1-6 00:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于生手来说,GPIO这个sample够害人的
我的一个产品在用STM32F103,打样回来,焊接。
焊接好最小系统,USB转串口的sample测试,OK;继续焊接,GPIO的sample测试,挂了。然后开始怀疑自己的焊工是不是不过关,或者烙铁的ESD不起作用了。
算了,重新焊块板子,继续上次的OK和失败。
最后得一结论,每次都在GPIO这个sample的测试后就挂了,于是去仔细看source code,找到了,原来是在演示如何把JTAG的Port做IO用。多亏留下一个后门,好像是PB9,这里有个if和else,否则这JTAG怕是挂了,除非用烧录器把它恢复(ISP是否能行,没有仔细斟酌)。
于是,把if else对应的这个IO接VDD,复位,跑,ULINK连接,哈哈哈,好了。断电再上电,一试验,又不行了,还得拉IO到VDD救命。这次学乖了,当ULINK可以连接的时候,赶快把我熟悉的USB串口程序下载上去,然后怎么断电也不怕了。
沙发
hotpower| | 2008-1-6 04:28 | 只看该作者

学习学习~~~

使用特权

评论回复
板凳
qihao| | 2008-1-6 09:51 | 只看该作者

哈哈哈哈

我就看你当先烈  我不吱声~~~~~   

这些Demo 的作者完全是站在IC的角度很炫耀的来写Demo的,根本不是为了用几句简单的话来把用法说明白。

呵呵 

其实在KEIL网站上下的 NXP的Demo, 呵呵 写法完全不一样,就很简单的相关部分。


使用特权

评论回复
地板
zhongwei| | 2008-1-6 10:26 | 只看该作者

看了一下资料,应该挂不掉吧!

应该执行一次上电复位的条件.

使用特权

评论回复
5
TRUE_ARM| | 2008-1-6 11:25 | 只看该作者

这个问题前面已经讨论过了

本人刚开始就遭遇过这样的苦恼,也在这里求助,并得到解决!

使用特权

评论回复
6
hotpower| | 2008-1-6 11:30 | 只看该作者

JTAG做GPIO在任何ARM都会遇到同样的问题

肯定要有什么功能开关之类的机关.否则运行中要误入DEBUG状态的.

ISP也存在此问题,所以它有RST和BOOT0/1的硬件保护,避免误入.

总之苦恼过的人之后永远是"微笑"...

使用特权

评论回复
7
McuPlayer|  楼主 | 2008-1-6 11:44 | 只看该作者

差点当先烈换来的裤子

跟解放军似的,挂了一条腿,没有功劳也给个二等功

使用特权

评论回复
8
hotpower| | 2008-1-6 11:48 | 只看该作者

哈哈~~~向"革命烈士"敬礼~~~

使用特权

评论回复
9
qihao| | 2008-1-6 14:31 | 只看该作者

革命烈士可千万别埋洛阳哈!

不过老兄也真是有点大意了,还是要尽量别当烈士,难保不肖子孙给你个保护性修缮哈!

使用特权

评论回复
10
McuPlayer|  楼主 | 2008-1-6 14:52 | 只看该作者

怎么在我的裤子上发广告

在ST的地盘上得一裤子容易吗?还被人贴牛皮癣
而且是KEIL淘汰的ULINK1,好歹也得个ULIN2才有面子啊

使用特权

评论回复
11
zusen| | 2008-1-6 15:22 | 只看该作者

哈哈,那时玩LM101时,也搞毁了两只

用JTAG做IO口

使用特权

评论回复
12
香水城| | 2008-1-6 17:07 | 只看该作者

碰到楼主这种问题,还有另外两种处理办法

如果把JTAG引脚映射到GPIO而不能使用JTAG的调试功能后,通常有两种方法可以恢复:

1)启动芯片内置的Bootloader或俗称的ISP功能,把Flash中的内容擦除即可恢复芯片的JTAG调试功能。

2)把BOOT0和BOOT1引脚配置成从RAM启动,然后芯片可以在RAM中进行JTAG调试,这时在RAM中运行一个擦除Flash的程序,亦可恢复芯片的JTAG调试功能。不过使用这种办法,最好是事先准备好相应的擦除Flash的程序。

上述第1种方法比较简单。


为防止发生楼主这种情况,建议可以如同ST提供的这个例子程序那样,单独设立一种机制能够打开JTAG引脚的功能。

还有一种比较好的方法是,在复位后程序刚刚运行起来的时候,不要马上就把JTAG引脚映射到GPIO,而是等待一个用户的输入事件(如按下了一个按键),然后再进行映射操作;这样可以很方便的进行JTAG调试和实时调试之间的切换。

使用特权

评论回复
13
ijk| | 2008-1-6 21:40 | 只看该作者

其实想从这种状态恢复过来很简单

1)把BOOT0和BOOT1引脚配置成从RAM启动
2)通过JTAG口,把程序下载到FLASH中,覆盖掉原来的“问题”程序
3)把BOOT0和BOOT1引脚配置成从FLASH启动(该步骤为可选)
OK

使用特权

评论回复
14
hotpower| | 2008-1-6 21:50 | 只看该作者

本来认为BOOT1没什么用(不用RAM启动),现在要想想了~~~

使用特权

评论回复
15
walnutcy| | 2008-1-6 22:08 | 只看该作者

呵呵,是JTAG口当普通IO的问题,,其它一些IC也有的

使用特权

评论回复
16
香水城| | 2008-1-6 23:07 | 只看该作者

14楼这招更高!!

使用特权

评论回复
17
yijianglee| | 2008-1-6 23:18 | 只看该作者

学习了^_^

使用特权

评论回复
18
tsb0574| | 2008-1-10 21:36 | 只看该作者

学习……

使用特权

评论回复
19
greatbin| | 2008-1-11 09:29 | 只看该作者

这个铁自比较重要,计下了

使用特权

评论回复
20
ijk| | 2008-1-11 09:47 | 只看该作者

楼上说得好

但重要的贴为什么不能加入收藏夹呢?

使用特权

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

本版积分规则

338

主题

7307

帖子

26

粉丝