7606|13

9717

帖子

24

TA的资源

版主

楼主
 

ANDROID cc254x RGB多彩LED程序 [复制链接]

CC254X程序
  1. //               cc2541
  2. //            -----------------
  3. //        /|\|              XIN|-
  4. //         | |                 |
  5. //         --|RST          XOUT|-
  6. //           |                 |
  7. //           |        P0.4/T1.2|--> RED
  8. //           |        P0.5/T1.3|--> GREEN
  9. //           |        P0.6/T1.4|--> BLUE


  10. #include <hal_types.h>
  11. #include "ioCC254x_bitdef.h"
  12. #include "ioCC2541.h"
  13. void pwmEnable(void)
  14. {
  15.     T1CCTL2 = (T1CCTL2 & ~T1CCTLn_CMP) | T1CCTLn_MODE | T1CCTLn_CMP_SET_CMP_UP_CLR_0;//set channel 2
  16.     T1CCTL3 = (T1CCTL3 & ~T1CCTLn_CMP) | T1CCTLn_MODE | T1CCTLn_CMP_SET_CMP_UP_CLR_0;//and 3
  17.     T1CCTL4 = (T1CCTL4 & ~T1CCTLn_CMP) | T1CCTLn_MODE | T1CCTLn_CMP_SET_CMP_UP_CLR_0;//and 4
  18.     T1CTL = (T1CTL & ~(T1CTL_MODE | T1CTL_DIV)) | T1CTL_MODE_MODULO | T1CTL_DIV_1;//start timer1
  19. }
  20. void pwmDisable(void)
  21. {
  22.     T1CCTL2 = (T1CCTL2 & ~T1CCTLn_CMP);//disable channel 2
  23.     T1CCTL3 = (T1CCTL3 & ~T1CCTLn_CMP);//and 3
  24.     T1CCTL4 = (T1CCTL4 & ~T1CCTLn_CMP);//and 4
  25.     T1CTL = (T1CTL & ~(T1CTL_MODE | T1CTL_DIV));//stop timer1
  26. }
  27. void pwmInit(void)
  28. {
  29.     P0SEL |= BIT4+BIT5+BIT6;            // Selects P1_0 as peripheral I/O.
  30.     P0DIR |= BIT4+BIT5+BIT6;            // and output.
  31. //    PERCFG &= ~PERCFG_T1CFG;          // 0 = alt.1 1=alt.2   
  32. //    P2SEL |= P2SEL_PRI0P1;            // Port1 only When set Timer 1 has priotity over USART 0.   
  33.     P2DIR |= P2DIR_PRIP0_T1_2_3;        // Timer 1 channels 2-3 has priority, then USART 1, then USART 0, then Timer 1 channels 0-1.
  34.     pwmDisable();
  35. }
  36. void pwmSetValue(uint8 *pValue)
  37. {
  38.     pwmDisable();
  39.     T1CC0H = pValue[0];
  40.     T1CC0L = pValue[1];                       //0 总频率
  41.    
  42.     T1CC2H = T1CC0H - pValue[2];
  43.     T1CC2L = T1CC0L - pValue[3];                       //channel 2占空比
  44.    
  45.     T1CC3H = T1CC0H - pValue[4];
  46.     T1CC3L = T1CC0L - pValue[5];                      //channel 3占空比
  47.      
  48.     T1CC4H = T1CC0H - pValue[6];
  49.     T1CC4L = T1CC0L - pValue[7];                      //channel 4占空比
  50.     pwmEnable();
  51. }
复制代码

  1. /*********************************************************************
  2. * @fn      simpleProfileChangeCB
  3. *
  4. * @brief   Callback from SimpleBLEProfile indicating a value change
  5. *
  6. * @param   paramID - parameter ID of the value that was changed.
  7. *
  8. * @return  none
  9. */
  10. static void simpleProfileChangeCB( uint8 paramID )
  11. {
  12.   uint8 newValue[10];

  13.   switch( paramID )
  14.   {
  15.     case SIMPLEPROFILE_CHAR1:
  16.       SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR1, &newValue );   
  17.       pwmSetValue(newValue);
  18.       #if (defined HAL_LCD) && (HAL_LCD == TRUE)
  19.       
  20.           HalLcdWriteString((char*) newValue,  HAL_LCD_LINE_3 );
  21.       //  HalLcdWriteStringValue( "Char 1:", (uint16)(newValue[0]), 10,  HAL_LCD_LINE_3 );
  22.       #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)

  23.       break;

  24.     case SIMPLEPROFILE_CHAR3:
  25.       SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR3, &newValue );

  26.       #if (defined HAL_LCD) && (HAL_LCD == TRUE)
  27.         HalLcdWriteStringValue( "Char 3:", (uint16)(newValue), 10,  HAL_LCD_LINE_3 );
  28.       #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)

  29.       break;

  30.     case SIMPLEPROFILE_CHAR5:
  31.       SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR5, &newValue );

  32.       #if (defined HAL_LCD) && (HAL_LCD == TRUE)
  33.         HalLcdWriteStringValue( "Char 5:", (uint16)(newValue[0]), 10,  HAL_LCD_LINE_3 );
  34.       #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)

  35.       break;

  36.     case SIMPLEPROFILE_CHAR6:
  37.       SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR6, &newValue );

  38.       #if (defined HAL_LCD) && (HAL_LCD == TRUE)
  39.         HalLcdWriteStringValue( "Char 6:", (uint16)(newValue[0]), 10,  HAL_LCD_LINE_3 );
  40.       #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)

  41.       break;
  42.     default:
  43.       // should not reach here!
  44.       break;
  45.   }
  46. }
复制代码
安卓程序
  1. void setValue(int fqc,int r,int g,int b)
  2. {
  3. if (rgbCharacteristic != null) {
  4. buffer[0] = (byte)(fqc>>8 & 0xff);
  5. buffer[1] = (byte)(fqc & 0xff);
  6. buffer[2] = (byte)(r>>8 & 0xff);
  7. buffer[3] = (byte)(r & 0xff);
  8. buffer[4] = (byte)(g>>8 & 0xff);
  9. buffer[5] = (byte)(g & 0xff);
  10. buffer[6] = (byte)(b>>8 & 0xff);
  11. buffer[7] = (byte)(b & 0xff)
  12. rgbCharacteristic.setValue(buffer);
  13. mBluetoothLeService.writeCharacteristic(rgbCharacteristic);
  14. }
  15. }
复制代码
  1.                 seekBar1 = (SeekBar)findViewById(R.id.seekBar1);
  2.                 seekBar2 = (SeekBar)findViewById(R.id.seekBar2);
  3.                 seekBar3 = (SeekBar)findViewById(R.id.seekBar3);
  4.                 seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
  5.             /**
  6.              * 拖动条停止拖动的时候调用
  7.              */
  8.             @Override
  9.             public void onStopTrackingTouch(SeekBar seekBar) {

  10.                     //setValue(fqc,r,g,b);
  11.             }
  12.             /**
  13.              * 拖动条开始拖动的时候调用
  14.              */
  15.             @Override
  16.             public void onStartTrackingTouch(SeekBar seekBar) {

  17.             }
  18.             /**
  19.              * 拖动条进度改变的时候调用
  20.              */
  21.             @Override
  22.             public void onProgressChanged(SeekBar seekBar, int progress,
  23.                     boolean fromUser) {
  24.                     r =(int) (fqc/100.00*progress);
  25.                     setValue(fqc,r,g,b);
  26. //               tv.setText(String.format("R:%d G:%d B:%d %s",r,g,b,""));
  27.             }
  28.         });
  29.                 seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
  30.             /**
  31.              * 拖动条停止拖动的时候调用
  32.              */
  33.             @Override
  34.             public void onStopTrackingTouch(SeekBar seekBar) {

  35.                     //setValue(fqc,r,g,b);
  36.             }
  37.             /**
  38.              * 拖动条开始拖动的时候调用
  39.              */
  40.             @Override
  41.             public void onStartTrackingTouch(SeekBar seekBar) {

  42.             }
  43.             /**
  44.              * 拖动条进度改变的时候调用
  45.              */
  46.             @Override
  47.             public void onProgressChanged(SeekBar seekBar, int progress,
  48.                     boolean fromUser) {
  49.                     g =(int) (fqc/100.00*progress);
  50.                     setValue(fqc,r,g,b);
  51. //               tv.setText(String.format("R:%d G:%d B:%d %s",r,g,b,""));
  52.             }
  53.         });
  54.                 seekBar3.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
  55.             /**
  56.              * 拖动条停止拖动的时候调用
  57.              */
  58.             @Override
  59.             public void onStopTrackingTouch(SeekBar seekBar) {

  60.                     //setValue(fqc,r,g,b);
  61.             }
  62.             /**
  63.              * 拖动条开始拖动的时候调用
  64.              */
  65.             @Override
  66.             public void onStartTrackingTouch(SeekBar seekBar) {

  67.             }
  68.             /**
  69.              * 拖动条进度改变的时候调用
  70.              */
  71.             @Override
  72.             public void onProgressChanged(SeekBar seekBar, int progress,
  73.                     boolean fromUser) {
  74.                     b =(int) (fqc/100.00*progress);
  75.                     setValue(fqc,r,g,b);
  76. //               tv.setText(String.format("R:%d G:%d B:%d %s",r,g,b,""));
  77.             }
  78.         });

  79.         }
复制代码



代码:
SimpleBLEPeripheral RGB LED.rar (4.9 MB, 下载次数: 118)
ANDROID RGB LED V1.1.rar (1.04 MB, 下载次数: 88)

QQ图片20140521111542.jpg (9.66 KB, 下载次数: 1)

QQ图片20140521111542.jpg
此帖出自无线连接论坛

最新回复

感谢分享,学习学习  详情 回复 发表于 2014-10-31 11:28
点赞 关注
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 

回复
举报

5304

帖子

453

TA的资源

五彩晶圆(高级)

沙发
 
谢谢分享
学习下
此帖出自无线连接论坛
 
 
 

回复

5304

帖子

453

TA的资源

五彩晶圆(高级)

板凳
 
奇怪,为什么把安卓下 安装ANDROID RGB LED V1.1\bin目录中的 BluetoothLeGatt.apk
“出现解析错误
解析包时出现问题  ”
此帖出自无线连接论坛

点评

你的手机要支持android4.3以上系统  详情 回复 发表于 2014-5-26 16:04
 
 
 

回复

9717

帖子

24

TA的资源

版主

4
 
蓝雨夜 发表于 2014-5-22 16:14
奇怪,为什么把安卓下 安装ANDROID RGB LED V1.1\bin目录中的 BluetoothLeGatt.apk
“出现解析错误
解析 ...

你的手机要支持android4.3以上系统
此帖出自无线连接论坛
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

5
 
你好,  uint8 charValue1[SIMPLEPROFILE_CHAR1_LEN] =  { 0,255,0,1,0,1,0,1, '0', '9' }; 里边的 SIMPLEPROFILE_CHAR1_LEN 定义没有, 你的分享少了东西了了, 能分享下吗?  感谢。
此帖出自无线连接论坛

点评

是啊,这个我也发现了,打包的时候没有把profile含进去。  详情 回复 发表于 2014-6-12 10:57
 
 
 

回复

9717

帖子

24

TA的资源

版主

6
 
mzy202@126.com 发表于 2014-6-12 10:05
你好,  uint8 charValue1[SIMPLEPROFILE_CHAR1_LEN] =  { 0,255,0,1,0,1,0,1, '0', '9' }; 里边的 SIMPLEP ...

是啊,这个我也发现了,打包的时候没有把profile含进去。
此帖出自无线连接论坛
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

9717

帖子

24

TA的资源

版主

7
 
把缺的文件补上了

ti.rf.cc254x.rgb led.code @SimpleBLEPeripheral RGB LED @v1.2 @2014-6-13.rar (604.01 KB, 下载次数: 30)


此帖出自无线连接论坛

点评

请教一下,出现这个报错是不是版本问题: Error: array is too large D:\BLE-CC254x-1.4.0\Components\osal\common\OSAL_Memory.c 177  详情 回复 发表于 2014-9-17 15:24
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

8
 
多谢分享,回去试试。
此帖出自无线连接论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

9
 

请教一下,出现这个报错是不是版本问题:
Error[Pe095]: array is too large D:\BLE-CC254x-1.4.0\Components\osal\common\OSAL_Memory.c 177


此帖出自无线连接论坛

点评

很长时间不搞BLE了,你用的什么版本?  详情 回复 发表于 2014-9-17 19:14
 
 
 

回复

9717

帖子

24

TA的资源

版主

10
 
weiyongwill 发表于 2014-9-17 15:24
请教一下,出现这个报错是不是版本问题:
Error: array is too large D:\BLE-CC254x-1.4.0\Components\o ...

很长时间不搞BLE了,你用的什么版本?
此帖出自无线连接论坛

点评

我用的是8.20的IAR。1.4的库  详情 回复 发表于 2014-9-22 19:18
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

11
 
littleshrimp 发表于 2014-9-17 19:14
很长时间不搞BLE了,你用的什么版本?

我用的是8.20的IAR。1.4的库
此帖出自无线连接论坛

点评

出现这个问题是因为这个项目没在"Options"->"Target"->"Device"里选择"CC2541F256"这个设备型号(怪我)。 [attachimg]172720[/attachimg] 把下边这个路径下的文件添加到"Device"里。 C:\Program Files\IAR Sys  详情 回复 发表于 2014-9-24 09:16
 
 
 

回复

9717

帖子

24

TA的资源

版主

12
 
weiyongwill 发表于 2014-9-22 19:18
我用的是8.20的IAR。1.4的库

出现这个问题是因为这个项目没在"Options"->"Target"->"Device"里选择"CC2541F256"这个设备型号(怪我)。


把下边这个路径下的文件添加到"Device"里。
C:\Program Files\IAR Systems\Embedded Workbench 6.4\8051\config\devices\Texas Instruments\CC2431F128.i51

如果出现下边这个问题

可以到"Option"->"Stack/Heap"里修改参数为这样。

你也可以把这些文件放到其它工程里,或者自己新建一个工程。
此帖出自无线连接论坛

点评

初学BLE,多谢您的指点。现在已经编译通过了。只有几条警告, Warning[w6]: Type conflict for external/entry "appearanceUUID", in module gapgattserver against external/entry in module gatt_uuid; ty  详情 回复 发表于 2014-10-8 16:00
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

13
 
littleshrimp 发表于 2014-9-24 09:16
出现这个问题是因为这个项目没在"Options"->"Target"->"Device"里选择"CC2541F256"这个设备型号(怪我) ...

初学BLE,多谢您的指点。现在已经编译通过了。只有几条警告,

Warning[w6]: Type conflict for external/entry "appearanceUUID", in module gapgattserver against external/entry in  

module gatt_uuid; types have different memory attributes



此帖出自无线连接论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

14
 
感谢分享,学习学习
此帖出自无线连接论坛
 
 
 

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

随便看看
查找数据手册?

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