Microduino BLE core 开发环境的搭建和跑马灯-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7285|回复: 0

Microduino BLE core 开发环境的搭建和跑马灯

[复制链接]
发表于 2017-10-8 22:42 | 显示全部楼层 |阅读模式
本帖最后由 topdog 于 2019-9-22 16:48 编辑

    美科科技有一款使用美国德州仪器仪表公司生产的cc2541芯片,针对低功耗蓝牙4.0的核心板,称为Microduino BLE core。   用这个核心板写了个跑马灯程序,一步一步介绍下BLE 4.0开发环境的架设,工程的搭建,烧录的方法。
   管脚图:          6.JPG

   蓝牙(bluetooth)是蓝牙协议的简称,他是蓝牙协议小组,结合瑞典的传说来命名蓝牙协议的,官方网站 https://www.bluetooth.com/zh-cn 。根据蓝牙版本的不同,后面加上版本号,cc2541对应BLE 4.0。
   蓝牙堆栈下载地址BLE-STACK :   http://www.ti.com.cn/tool/cn/ble-stack 。最新的是BLE-CC254x-1.4.2.2 。(本例用不到)
   德州仪器公司提供了开发者的技术论坛: http://www.deyisupport.com/question_answer/default.aspx
   开发工具是cc-dubegger:购买地址
   Microduino BLE core 的内核是8051,开发环境使用IAR Embedded Workbench,下载地址:https://www.iar.com/iar-embedded-workbench/#!?architecture=8051 。最新版本10.10,IAR高版本可以打开低版本写的程序,但是再用低版本就打不来了,所以要做好备份。安装好IAR每次必须认证一下,此外,打开IAR License Manager,tools-->Extract optional packages-->IRA Library Source for 8051 .
    1.JPG
      下面我们结合创建一个跑马灯来搭建工程。打开IAR Embedded Workbench,创建一个新的工程:
       2.JPG
       cc2541的内核是增强的8051,这里我们创建一个空的8051工程,保存到文件夹。
       3.JPG
  new file -->save AS -->led.c  输入代码。
    4.JPG
  并且在工程里面add led.c
   5.JPG
     如果把蓝牙工程比作一块一块工地,就要给每个工地(Workspace)命名一下, file-->save workspace As...-->led.eww  
     cpu配置:点击led-debug 右键 options -->geneal options
    7.JPG
   linker 选择   $TOOLKIT_DIR$\config\devices\Texas Instruments\lnk51ew_cc2541F256.xcl
    8.JPG
   debugger选择  $TOOLKIT_DIR$\config\devices\Texas Instruments\ioCC2541F256.ddf
    9.JPG
  子项选项配置:
    10.JPG
#include <ioCC2541.h>

typedef unsigned char uint8;
typedef unsigned short int  uint16;


#define LED1 P1_0       //定义P1.0(D8)口为LED1控制端
#define LED2 P1_2       //定义P1.2(D10)口为LED2控制端
#define LED3 P1_4       //定义P1.4(D12)口为LED3控制端
#define LED4 P0_1       //定义P0.1口为LED4控制端

/****************************************************************************
常用宏定义
****************************************************************************/
#define BV(x) (1<<(x))


/****************************************************************************
名    称: DelayMS()
功    能: 毫秒延时,系统时钟不配置时默认使用内部16M
入口参数: msec 延时参数,注意,最大数值为65536ms
出口参数: 无
****************************************************************************/
void DelayMS(uint16 msec)
{
    uint16 i,j;
   
    for (i=0; i<msec; i++)
        for (j=0; j<536; j++);
}

/****************************************************************************
名    称: LedSet()
功    能: 点亮或熄灭所有LED灯   
入口参数: m为0时LED灯亮  m为1时LED灯灭
出口参数: 无
****************************************************************************/
void LedSet(uint8 m)
{
    LED1 = m;
    LED2 = m;
    LED3 = m;
    LED4 = m;
}

/****************************************************************************
名    称: InitLed()
功    能: 设置LED灯相应的IO口
入口参数: 无
出口参数: 无
****************************************************************************/
void InitLed(void)
{
        P1DIR |=BV(0) | BV(2) | BV(4); //P1.0(D8),P1.2(D10),P1.4(D12)定义为输出口
        P1SEL &= ~( BV(0) | BV(2) | BV(4));        //P1.0(D8),P1.2(D10),P1.4(D12)定义为一般GPIO
        P0DIR |= 0x02;    //P0.1(D2)定义为输出口
        P0SEL &= ~0x01;   // P0.1(D2)定义为一般GPIO

        //只有初始化过GPIO后,对GPIO的操作才会生效
    LedSet(0);      //使所有LED灯默认为熄灭状态
}


void main(void)
{
    uint8 i;
   
    InitLed();               //设置LED灯相关IO口
   
    while(1)
    {  
        LED1 = !LED1;         //流水灯,初始化时LED为熄灭执行后则点亮
        DelayMS(200);         
        LED2 = !LED2;         
        DelayMS(200);            
        LED3 = !LED3;        
        DelayMS(200);
        LED4 = !LED4;        
        DelayMS(200);   
        
        LED4 = !LED4;       //与上述过程相反
        DelayMS(200);   
        LED3 = !LED3;        
        DelayMS(200);   
        LED2 = !LED2;         
        DelayMS(200);  
        LED1 = !LED1;         
        DelayMS(200);
        
        for (i=0; i<3; i++)  //所有灯闪烁3次
        {
           LedSet(0);    //关闭所有LED灯
           DelayMS(200);
           LedSet(1);    //打开所有LED灯
           DelayMS(200);
        }
        
        LedSet(0);       //使所有LED灯熄灭状态
        DelayMS(500);
    }
}
程序使用了4个led,配置了P1DIR,P0DIR寄存器。程序说明见注释。
点击project-->rebuild all 没有报错,再点击 downlond and debug ,这样程序就烧录到了Microduino BLE core上了。
11.JPG


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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 02:49 , Processed in 0.164541 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表