打印

STM32开发板例程中的Bug

[复制链接]
3677|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a_bb|  楼主 | 2007-12-13 15:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
连续几周参加cotex32的研讨会,收获颇多,深感其功能强大,价格低廉,市场广阔,同时也认识了不少业界的朋友。

苦于买不起1980的ULINK2(俺是学生,银子少啊),而自己的ULINK又不支持M32,一直没有切身去好好体会它。这周ST巡演,便吐血购入一块开发板:embest的EMSTM32V1(自费的哟)。回来就上电,爽。
但试用了第一个程序就发现了问题,不是电路的问题,而是例程本身,可能是写得太仓促了吧!
就是LCD_1620,液晶显示的例子。

bug1. 在设置系统时钟时SetupClock
  /* SysTick event each 10 ms with input clock equal to 9MHz (HCLK/8)         */
  SysTick_SetReload(900000);
以上错误,应改为SysTick_SetReload(90000);

bug2.在初始化LCD lcd_init
LCD_ALL_DIR_OUT 的宏定义
#define LCD_ALL_DIR_OUT       GPIOA->CRL = (GPIOA->CRL & 0xFFF00000) | 0x00033333; 
                              GPIOA->CRH = (GPIOA->CRH & 0xFFFF0000) | 0x00003333; 
                              GPIOD->CRL = (GPIOD->CRL & 0x00000000) | 0x33333333; 
                              GPIOD->CRH = (GPIOD->CRH & 0x00000000) | 0x33333333; 
                              GPIOE->CRL = (GPIOE->CRL & 0x00000000) | 0x33333333; 
                              GPIOE->CRH = (GPIOE->CRH & 0x00000000) | 0x33333333; 
以上错误,应改为:
#define LCD_ALL_DIR_OUT       GPIOA->CRH = (GPIOA->CRH & 0xFFFFFFF0) | 0x00000003; 
                              GPIOD->CRL = (GPIOD->CRL & 0x00000000) | 0x33333333; 
                              GPIOD->CRH = (GPIOD->CRH & 0x00000000) | 0x33333333; 
                              GPIOE->CRL = (GPIOE->CRL & 0x00000000) | 0x33333333; 
                              GPIOE->CRH = (GPIOE->CRH & 0x00000000) | 0x33333333; 


但我还是对ARM中国,ST北京,embest北京等公司,各位辛勤有效的工作表示衷心感谢!
沙发
rogetxu| | 2007-12-13 19:06 | 只看该作者

同感

的确有点急。说明书也有点简单不看原理图还找不到JUMP.
select-jtag设计不够严谨。HC244有悬空状态出现。
不过RMB199也真不容易。表示感谢!

使用特权

评论回复
板凳
greatbin| | 2007-12-14 13:44 | 只看该作者

形象打折扣了

使用特权

评论回复
地板
OneStart00| | 2007-12-15 10:05 | 只看该作者

谢谢a_bb的帖子

确实因时间紧急导致遗漏修改,如果a_bb能说明一下为何修改,将让更多人受益(本人暂也不清楚)。

PS:据实际测试,当前配置在硬件上可正常显示。
如果确实需要修改,我们将更新后面出货光盘。

再次表示感谢!

使用特权

评论回复
5
yocheng| | 2007-12-16 15:38 | 只看该作者

关于应改为SysTick_SetReload(90000);

MHZ表示1000000次/秒   9MHZ=9000000

不知我有没有理解错呢?

使用特权

评论回复
6
hotpower| | 2007-12-16 18:02 | 只看该作者

请问楼主embest的EMSTM32V1是那个199???

准备学习STM32,不知需要准备点什么资料和做什么热身运动....

谢谢各位指教!!!!!!!

使用特权

评论回复
7
johnnyqyun| | 2007-12-16 20:46 | 只看该作者

緊跟水王的腳步

昨天在看datasheet和原理圖。。

使用特权

评论回复
8
a_bb|  楼主 | 2007-12-17 09:23 | 只看该作者

回6楼

就是在ST巡演会上卖的开发板

使用特权

评论回复
9
a_bb|  楼主 | 2007-12-17 09:31 | 只看该作者

回4楼

bug1 是计算错误,10ms定时中断,9M/9000 = 100Hz
bug2 是原来的设置影响了串口。

这两个错误并不影响LCD的显示,但此例程不仅提供LCD显示功能,
而且还进行AD采样,并将结果通过串口输出,和通过LCD显示。
bug使AD采样(数据处理间隔)和串口输出都不正常了。

使用特权

评论回复
10
a_bb|  楼主 | 2007-12-17 16:48 | 只看该作者

再指出一处

在例程FLASH中:

  /* Define the number of page to be erased */
  NbrOfPage = (EndAddr - StartAddr) >> 8;

应该为:
  NbrOfPage = (EndAddr - StartAddr) >> 10;

因为:
#define PageSize   ((u16)0x400)
当然页大小就是1K字节

使用特权

评论回复
11
hotpower| | 2007-12-18 21:10 | 只看该作者

感谢楼主为我们菜鸟扫雷~~~

谢谢!!!

使用特权

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

本版积分规则

35

主题

98

帖子

0

粉丝