1416|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

入门msp430fr6989之lcd功能篇 [复制链接]

德州仪器的官网上的msp430fr6989单片机上有一块lcd,其有40个引脚,分别两边各有20个引脚排布。学过stm32的能很快掌握lcd的寄存器模式下写成的代码,但是新手最好入门库函数一类,如果时间很紧迫的情况下。板上是0-7的行,分为上半屏和下半屏。列有LCDM1-LCDM20,总共有8*20=160个segment。在前面的帖子中,对引脚的定义是通过寄存器进行定义的,而如果要让流水灯亮起来就可以把寄存器及地址写在一个函数内,包装起来,直接在官网上找的代码,很丰富,学这个很快。比如以下:

  1. <p>//定义输出引脚
  2. void GPIO_setAsOutputPin(uint8_t selectedPort,
  3.                          uint16_t selectedPins) {
  4.     uint16_t baseAddress = GPIO_PORT_TO_BASE[selectedPort];</p><p>    #ifndef NDEBUG
  5.     if(baseAddress == 0xFFFF)
  6.     {
  7.         return;
  8.     }
  9.     #endif</p><p>    // Shift by 8 if port is even (upper 8-bits)
  10.     if((selectedPort & 1) ^ 1)
  11.     {
  12.         selectedPins <<= 8;
  13.     }</p><p>    HWREG16(baseAddress + OFS_PASEL0) &= ~selectedPins;
  14.     HWREG16(baseAddress + OFS_PASEL1) &= ~selectedPins;
  15.     HWREG16(baseAddress + OFS_PADIR) |= selectedPins;</p><p>    return;
  16. }</p><p>
  17. </p><p>
  18. </p><p>Init_GPIO();
  19.   
  20.  
  21. GPIO_clearInterrupt(GPIO_PORT_P1, GPIO_PIN1);
  22. GPIO_clearInterrupt(GPIO_PORT_P1, GPIO_PIN2);</p><font size="5"><p>void Init_GPIO(void)
  23. {
  24.   // Set all GPIO pins to output low to prevent floating input and reduce power consumption
  25.   GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  26.   GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  27.   GPIO_setOutputLowOnPin(GPIO_PORT_P3, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  28.   GPIO_setOutputLowOnPin(GPIO_PORT_P4, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  29.   GPIO_setOutputLowOnPin(GPIO_PORT_P5, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  30.   GPIO_setOutputLowOnPin(GPIO_PORT_P6, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  31.   GPIO_setOutputLowOnPin(GPIO_PORT_P7, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  32.   GPIO_setOutputLowOnPin(GPIO_PORT_P8, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  33.   GPIO_setOutputLowOnPin(GPIO_PORT_P9, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  34.   
  35.   GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  36.   GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  37.   GPIO_setAsOutputPin(GPIO_PORT_P3, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  38.   GPIO_setAsOutputPin(GPIO_PORT_P4, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  39.   GPIO_setAsOutputPin(GPIO_PORT_P5, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  40.   GPIO_setAsOutputPin(GPIO_PORT_P6, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  41.   GPIO_setAsOutputPin(GPIO_PORT_P7, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  42.   GPIO_setAsOutputPin(GPIO_PORT_P8, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  43.   GPIO_setAsOutputPin(GPIO_PORT_P9, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7);
  44.   
  45.   GPIO_setAsInputPin(GPIO_PORT_P3, GPIO_PIN5);
  46.   
  47.   // Configure button S1 (P1.1) interrupt
  48.   GPIO_selectInterruptEdge(GPIO_PORT_P1, GPIO_PIN1, GPIO_HIGH_TO_LOW_TRANSITION);
  49.   GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1);
  50.   GPIO_clearInterrupt(GPIO_PORT_P1, GPIO_PIN1);
  51.   GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);
  52.   
  53.   // Configure button S2 (P1.2) interrupt
  54.   GPIO_selectInterruptEdge(GPIO_PORT_P1, GPIO_PIN2, GPIO_HIGH_TO_LOW_TRANSITION);
  55.   GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN2);
  56.   GPIO_clearInterrupt(GPIO_PORT_P1, GPIO_PIN2);
  57.   GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN2);
  58.   
  59.   // Set P4.1 and P4.2 as Secondary Module Function Input, LFXT.
  60.   GPIO_setAsPeripheralModuleFunctionInputPin(
  61.                                              GPIO_PORT_PJ,
  62.                                              GPIO_PIN4 + GPIO_PIN5,
  63.                                              GPIO_PRIMARY_MODULE_FUNCTION
  64.                                                );
  65.   
  66.   // Disable the GPIO power-on default high-impedance mode
  67.   // to activate previously configured port settings
  68.   PMM_unlockLPM5();</p><p>}</p></font><p>
  69. </p>
 
点赞 关注

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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