1608|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

MSP430-169LCD学习笔记:LCD显示驱动Demo code [复制链接]

一、硬件环境

1.1 MSP430-169LCD概述

MSP430-169LCD是olimex公司一款基于MSP430的开发版,具有如下特性[1],外观示意图见图1:

MCU: MSP430F169 with 60K Bytes Program Flash, 256 Bytes data Flash,2K Bytes RAM
NOKIA 3310 LCD 84x48 pixels black & white
Joystick with 4 directions and push button function
SD/MMC card connector
two LEDs: status and power
RESET switch
JTAG connector
32 768 Hz oscillator crystal
8Mhz crystall oscillator
power supply voltage regulators and filtering capacitor
extension headers for all uC pins
PCB: FR-4, 1.5 mm (0,062"), soldermask, white silkscreen component print
Dimensions: 67x66 mm (2.65x2.6")

让我感到惊讶的是,官方没有提供这个版子的用户指南(也许我没找到),只给了原理图、LCD的Demo(这些可从[1]下载)。

图1 MSP430-169LCD示意图

1.2 MSP-FET430UIF调试器

MSP-FET430UIF是TI的FLASH仿真工具,这里只是简单用其作为下载器,详情参考官网,MSP-FET430UIF外观示意图如下:

图2 MSP-FET430UIF外观示意图

1.3 软件环境

这里选择用IAR Embedded Workbench for MSP430 5.40.3版本,将上述硬件连接好,就可以进行调试Demo code了。



二、调试运行

2.1 unnamed错误

(1) 错误

从[1]下得Demo code压缩包,解压,打开MSP430_169LCD.eww(devices和Debugger Driver已设置好),make下,会提示如下错误:

图3 unnamed错误示意图

(2) 解决

遇到这种问题,首先全局查找(Find in files, 快捷键Ctrl+Shift+F)未定义的符号,看是不是有头文件没被include进去或者有目录没被preprocessor。否则就是没定义了,本Demo恰是这种情况。

那好,现在把这些位定义就行了。通过分析可知,问题出在寄存器的每一位定义上。例如:Demo假定P3DIR的各位定义为P3DIR_0、P3DIR_1、P3DIR_2……,事实上,io430fx16x.h将P3DIR的各位定位为P0、P1、P2……,部分源代码如下:


  • __no_init volatile union
  • {
  •   unsigned char P3DIR; /* Port 3 Direction */
  •   struct
  •   {
  •     unsigned char P0 : 1; /* */
  •     unsigned char P1 : 1; /* */
  •     unsigned char P2 : 1; /* */
  •     unsigned char P3 : 1; /* */
  •     unsigned char P4 : 1; /* */
  •     unsigned char P5 : 1; /* */
  •     unsigned char P6 : 1; /* */
  •     unsigned char P7 : 1; /* */
  •   }P3DIR_bit;
  • } @0x001A;


现在就简单了,我们诸如P3DIR_0、P3DIR_1、P3DIR_2重定义到P0、P1、P2。这里,我们将其统一放在一个新文件io_redef.h,并在lcd_new.c和main.c包含这个文件。io_redef.h源代码如下:


  • //file name:io_redef.h, added by jelline
  • #ifndef _IO_REDEF_H_
  • #define _IO_REDEF_H_
  • #define P3DIR_0 P0
  • #define P3DIR_1 P1
  • #define P3DIR_2 P2
  • #define P3DIR_3 P3
  • #define P3DIR_4 P4
  • #define P3SEL_0 P0
  • #define P3SEL_1 P1
  • #define P3SEL_2 P2
  • #define P3SEL_3 P3
  • #define P3OUT_0 P0
  • #define P3OUT_2 P2
  • #define P5OUT_4 P4
  • #define P5DIR_4 P4
  • #define P5DIR_5 P5
  • #define P5DIR_6 P6
  • #endif


2.2 _HEAP_SIZE未定义

(1) 问题

解决了上述问题,重新make,编译通过,但链接出错,错误提示如下:

图4 _HEAP_SIZE未定义报错

(2) 解决

透过链接的提示信息可以得知,问题出在IAR的链接控制脚本,找到该脚本(我的路径是D:\IAR Systems\Embedded Workbench 6.0 Evaluation\430\config\lnk430f169.xcl)。这里,我们将lnk430f169.xcl拷贝到该工程的文件目录MSP430_169_forweb_modify\下,再修改,我们发现_HEAP_SIZE被注释掉了,如下图,取消注释。

图5 lnk430f169链接控制脚本部分代码

最后一步,将修改过的链接控制脚本覆盖默认的脚本,具体步骤为:project-->options-->linker-->Config选项卡


 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表