3281|3

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

【TI首届低功耗设计大赛】为msp430fr5969移植命令行nanouif [复制链接]

好吧,我只是折腾了一下下,移植了一个nanouif的命令行,用于人机交互吧,没有液晶,手上的lcd引脚太多,不适合。还有个ft800的板子,功耗也太高,不适合。

uif来源于fsl M0+的基础例程,直接可以从fsl的官网下载,这里就不介绍了, 很自己简单动手写写也快。

关于串口接收的低功耗处理,如下思路供大家参考,所有的相关操作都可借鉴,其次需要注意低功耗设计不单单是软件的事情,硬件也很讲究,低功耗外设,低漏电,外设电源控制这个一定需要注意,之前在焊接上板的时候忘记给相关的传感器电源加开关管控制功耗了。。所以功耗很大,还有那个wifi我只能呵呵了,低功耗控制引脚竟然是rfu功能。

UART接收中断函数,注意使用退出低功耗模式的位置
  1. /**
  2. * @brief  USCI_A0_ISR
  3. * @note   USCI_A0接收中断
  4. * @param  none
  5. * @retval none
  6. */
  7. #pragma vector=USCI_A0_VECTOR
  8. __interrupt void USCI_A0_ISR(void)
  9. {
  10.         switch (__even_in_range(UCA0IV, USCI_UART_UCTXCPTIFG))
  11.         {

  12.         case USCI_NONE:
  13.                 break;

  14.         case USCI_UART_UCRXIFG:
  15.         #if 1
  16.                 __bic_SR_register_on_exit(LPM0_bits);
  17.         #else
  18.                 while( !(UCA1IFG&UCTXIFG) );
  19.                 UCA1TXBUF = UCA0RXBUF;
  20.         #endif
  21.                 break;

  22.         case USCI_UART_UCTXIFG:
  23.                 break;

  24.         case USCI_UART_UCSTTIFG:
  25.                 break;

  26.         case USCI_UART_UCTXCPTIFG:
  27.                 break;

  28.         }

  29. }
复制代码


字符输入函数,注意进入低功耗模式的位置
  1. /**
  2. * @brief  in_char
  3. * @note   字符输入
  4. * @param  none
  5. * @retval none
  6. */
  7. char in_char(void)
  8. {
  9. #if 1
  10.         __bis_SR_register(LPM0_bits | GIE);
  11. #else
  12.         while( !(UCA0IFG&UCRXIFG) );
  13. #endif
  14.         return UCA0RXBUF;
  15. }
复制代码


获取命令行函数,他调用了in_char接口
  1. /**
  2. * @brief  get_line
  3. * @note   读取命令行
  4. * @param  none
  5. * @retval none
  6. */
  7. char *
  8. get_line (char *line)
  9. {
  10.     int  pos;
  11.     char ch;
  12.    
  13.     pos = 0;
  14.     ch = (char)in_char();
  15.     while ( (ch != 0x0D ) && (ch != 0x0A ) && (pos < UIF_MAX_LINE))
  16.     {
  17.         switch (ch)
  18.         {
  19.             case 0x08:              /* Backspace */
  20.             case 0x7F:              /* Delete */
  21.             if (pos > 0)
  22.             {
  23.                 pos -= 1;
  24.                 out_char(0x08);     /* backspace */
  25.                 out_char(' ');
  26.                 out_char(0x08);     /* backspace */
  27.             }
  28.             break;
  29.             
  30.             default:
  31.             if ((pos+1) < UIF_MAX_LINE)
  32.             {
  33.                 if ((ch > 0x1f) && (ch < 0x80))
  34.                 {
  35.                     line[pos++] = (char)ch;
  36.                     out_char((char)ch);
  37.                 }
  38.             }
  39.             break;
  40.         }
  41.         ch = (char)in_char();
  42.     }
  43.     line[pos] = '\0';
  44.     out_char(0x0D);    /* CR */
  45.     out_char(0x0A);    /* LF */
  46.    
  47.     return line;
  48. }
复制代码


运行结果:

1)help命令和set/show命令


2)set mode命令这里我使用mode来控制灯的运行模式,中断1s

  1. /**
  2. * @brief  Timer1_A0_ISR
  3. * @note   Timer1_A0中断
  4. * @param  none
  5. * @retval none
  6. */
  7. #pragma vector = TIMER1_A0_VECTOR
  8. __interrupt void Timer1_A0_ISR(void)
  9. {
  10.         uint8_t mode;
  11.         mode = uif_get_mode();

  12.         if (mode == 0) {
  13.                 P1OUT &= ~BIT0;
  14.         } else if (mode == 1) {
  15.                 P1OUT |= BIT0;
  16.         } else if (mode == 2) {
  17.                 P1OUT ^= BIT0;
  18.         }
  19. }
复制代码




3)set value命令





低功耗数据:





没别的,就是说说低功耗的处理机制,大家遇到delay或者其他的while的情况都可以采用这种方式,考虑好就行了。

最新回复

话说能耗数据怎么看的。。ccs中有么?  详情 回复 发表于 2014-9-15 09:18
 
点赞 关注(1)
个人签名电工

回复
举报

172

帖子

3

TA的资源

一粒金砂(中级)

沙发
 
赞一个。我这初学者看的呆呆的
 
 

回复

67

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
话说能耗数据怎么看的。。ccs中有么?

点评

ccs中有的  详情 回复 发表于 2014-9-15 12:41
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

4
 
gkcn 发表于 2014-9-15 09:18
话说能耗数据怎么看的。。ccs中有么?

ccs中有的
 
个人签名电工
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表