This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2541 迷你开发套件使用心得分享2+by askhua520

板载资源裸机测试:

1、按键,指示灯,三轴三轴MEMS加速度传感器;

板卡板载硬件资源不多,初步使用裸机进行测试,后期再规划使用蓝牙协议栈部分;

main.c

#include <ioCC2540.h>
#include "Base.h"
#include "softi2c.h"
#include "bma250.h"

//裸机程序验证
//参照原理图如下:
//按键连接地,LED灯高电平点亮;
//B3 P0_1
//B4 P0_0

//Green P1_0
//Red P1_1
//Buzzer P1_6

//BMA250 三轴MEMS加速度传感器
//7_VDD P2_0
//10_CSB P1_2 NC
//12_SCx P1_3 SCK OUT
//1_SDO P1_4 Gnd OUT
//2_SDx P1_5 SDA OUT
//5_INT1 P1_7
//6_INT2 INT2

#define Buzzer P1_6 //位控制,定义P1.6口为蜂鸣器
#define GLED P1_1 //位控制,定义P1.1口为Green Led
#define RLED P1_0 //位控制,定义P1.0口为Red Led
#define B3 P0_0 //位控制,定义P0.0口为B3
#define B4 P0_1 //位控制,定义P0.1口为B4

//uint8 distance=0;
//uint16 light;

uint8 data_staus=0;
uint8 data_id;

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

/****************************************************************************
* 名 称: InitCLK()
* 功 能: 设置系统时钟源
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void InitCLK()
{
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定为32M
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
}

void InitGPIO(void)
{
// P0DIR &= ~0x03;//P0.0,P0.1定义为输入口
// P0SEL &= ~0x03;//P0.0,P0.1定义为一般GPIO

P1DIR |= 0x43; //P1.0,P1.1定义为输出口
// P1SEL &= ~0x43;//P1.0,P1.1定义为一般GPIO
}


void main(void)
{
// short aacx[2],aacy[2],aacz[2];//加速度传感器原始数据

InitCLK(); //设置系统时钟源
InitGPIO(); //设置LED灯相应的GPIO口
IIC_Init();
BMA250_Init();

//LED测试
GLED = 1; //点亮GLED
RLED = 1; //点亮RLED
DelayMS(2000); //延时2秒

GLED = 0; //GLED熄灭
RLED = 0; //RLED熄灭
DelayMS(2000); //延时2秒

while(1) //死循环
{

if(!(B4)&&!(B3))
{
GLED = 0;
RLED = 0;

Buzzer = 1;
DelayMS(1);
Buzzer = 0;
DelayMS(1);
}
else
{
if(B3)
{
GLED = 0;
}
else
{
GLED = 1;
}
if(B4)
{
RLED = 0;
}
else
{
RLED = 1;
}
}

// data_id = Check_BMA250_ID(); // 0x03
// BMA250_Get_Acceleration(aacx, aacy, aacz);
// DelayMS(5);
// if(aacx[1] != 0)
// {
// RLED = 1;
// }
// else
// {
// RLED = 0;
// }
// if(aacy[1] != 0)
// {
// GLED = 1;
// }
// else
// {
// GLED = 0;
// }
// if(aacz[1] != 0)
// {
// RLED = 1;
// GLED = 1;
// }
// else
// {
// RLED = 0;
// GLED = 0;
// }
}
}