cc254x 蓝牙协议-通过CC2540作为从机,通过手机发送数据‘a’实现从机播放“收到”声音。

问题描述

通过CC2540作为从机,通过手机发送数据‘a’实现从机播放“收到”声音。
现在是的问题是通过设置定时器1来完成,
但是具体的声音“收到”的频率是怎么装载到定时器里面的,产生要的PWM波形。
我的程序只能改变占空比,只是发出声音的高低,还有就是网上都是音乐的频率,没有说话的
有没有取模软件把说话的声音频率算出来??求大神指导,
#include
#include ""bcomdef.h""
#include ""OSAL.h""
#include ""pwm.h""

//pwm pins:
//P0.0
//P0.1

uint16 gRed;
uint16 gGreen;
uint16 gBlue;

void PWM_init()
{
//设置pwm端口为输出
P1DIR|= BV(0)|BV(1);
//设置pwm端口为外设端口,非gpio
P1SEL|= BV(0)|BV(1);
//由于uart等会占用我们当前使用的pwm端口,因此需要将uart等重映射到别的端口去。
PERCFG |= 0x40; // Move USART1&2 to alternate2 location so that T1 is visible

// Initialize Timer 1
T1CTL = 0x0C; // Div = 128 CLR MODE = Suspended

T1CCTL1 = 0x0C; // IM = 0; CMP = Clear output on compare; Mode = Compare
T1CCTL2 = 0x0C; // IM = 0; CMP = Clear output on compare; Mode = Compare
T1CCTL3 = 0x0C; // IM = 0 CMP = Clear output on compare; Mode = Compare
T1CNTL = 0; // Reset timer to 0;

T1CCTL0 = 0x4C;

T1CC0H = 0x01;

T1CC0L = 0x77;

T1CC1H = 0x01;

T1CC1L = 0x77;
T1CC2H = 0x01;

T1CC2L = 0x77;
T1CC3H = 0x01;

T1CC3L = 0x77;

EA=1;
IEN1 |= 0x02; // Enable T1 cpu interrupt
}

void pwmPulse(uint16 red uint16 green uint16 blue)
{
uint16 rgb;
// stop注意,不能加这句,加了周期偏差十几倍,具体原因未查明
//T1CTL &= BV(0)|BV(1);
#if 0
r=375;
g=1;
b=1;
#else
r=red;
g=green;
b=blue;
#endif
// Set up the timer registers

T1CC1L = (uint8)r;
T1CC1H = (uint8)(r >> 8);
T1CC2L = (uint8)g;
T1CC2H = (uint8)(g >> 8);
T1CC3L = (uint8)b;
T1CC3H = (uint8)(b >> 8);

// Reset timer
T1CNTL = 0;

// Start timer in modulo mode.
T1CTL |= 0x02;

}

void setRGB(uint16 red uint16 green uint16 blue)
{
gRed=red;
gGreen=green;
gBlue=blue;
}

//#pragma register_bank=2
#pragma vector = T1_VECTOR
__interrupt void pwmISR (void) {
uint8 flags = T1STAT;
// T1 ch 0
if (flags & 0x01){

pwmPulse(gRedgGreengBlue);

}T1STAT = ~ flags;

}

if ( events & SBP_START_DEVICE_EVT )
{
static uint8 count=1;
static uint8 updown=1;

if(updown)  count++;else  count--;if(count==200)  updown=0;if(count==1)  updown=1;//设置占空比setRGB(countcountcount);osal_start_timerEx( SimpleOsal_TaskID SBP_START_DEVICE_EVT 5 );return ( events ^ SBP_START_DEVICE_EVT );

}
// Discard unknown events
return 0;

时间: 2025-01-19 01:27:52

cc254x 蓝牙协议-通过CC2540作为从机,通过手机发送数据‘a’实现从机播放“收到”声音。的相关文章

byte 接收数据 断点-控制器给C#上位机窗口程序发送数据的字节接收问题

问题描述 控制器给C#上位机窗口程序发送数据的字节接收问题 现在的问题是:设置断点后,发现接收的字节长度不稳定,最少是4个,最多会达到上千个. 代码原先是这么写的: int lenth = serialPort1.BytesToRead; if (lenth != 0) { Byte[] receiveByte = new Byte[length]; serialPort1.Read(receiveByte, 0, length) --------------------- ----接收的字节转

ble-安卓蓝牙BLE只能发送数据,不能接收数据,求教求教!

问题描述 安卓蓝牙BLE只能发送数据,不能接收数据,求教求教! 用的QN9021蓝牙模块,串口助手监控: 找到能够发送数据的characteristic,发送数据,串口助手收到数据 串口助手发送数据,接收数据总是null或者0,接收不到数据 所有的characteristic都试过了,还是不能读到数据,十分困惑,求教!!! 解决方案 https://segmentfault.com/q/1010000004363789 解决方案二: 1 能获取到有效特征值,并有读写权限,软硬件操作同一个特征值,

蓝牙协议实现爆严重安全漏洞,可在旧版本设备上构建勒索僵尸网络

本文讲的是蓝牙协议实现爆严重安全漏洞,可在旧版本设备上构建勒索僵尸网络, 如果你正在使用支持蓝牙功能的设备,那么请注意了!现在,无论你是使用智能手机.笔记本电脑.智能电视还是其他任何具备蓝牙功能的物联网设备,你都可能会遭遇恶意软件攻击,攻击者可以在无需与你进行任何交互的情况下远程接管你的设备. 近日,据外媒报道称,安全研究人员刚刚在蓝牙协议中发现了8个零日漏洞,这些漏洞将影响超过53亿设备--从Android.iOS.Windows以及Linux系统设备到使用短距离无线通信技术的物联网设备,无一

蓝牙协议爆严重安全漏洞 影响53亿设备

据外媒报道称,物联网安全研究公司Armis在蓝牙协议中发现了8个零日漏洞,这些漏洞将影响超过53亿设备--从Android.iOS.Windows以及Linux系统设备到使用短距离无线通信技术的物联网设备,利用这些蓝牙协议漏洞,Armis构建了一组攻击向量(attack vector)"BlueBorne",演示中攻击者完全接管支持蓝牙的设备,传播恶意软件,甚至建立一个"中间人"(MITM)连接. 演示中建立一个"中间人"(MITM)连接,以实现

Win10创造者更新SDK需GATT蓝牙协议支持

在今年早些时候,微软确认将为Win10 Mobile手机设备带来GATT Server APIs,时间是今年晚些时候.GATT协议对可穿戴设备服务来说至关重要,比如智能手环.智能手表等. 微软员工Clint Rutkas在9月底论坛内消息表示,蓝牙团队正在努力将GATT Server APIs加入到Windows10系统中,并且将首先面向Win10 Mobile Insider用户开放,SDK也在今年内到来.比如目前的Fitbit通知就需要GATT蓝牙协议支持. 而现在GATT概括内容已经现身最

蓝牙协议爆严重安全漏洞影响53亿设备 研究人员演示攻击向量BlueBorne

据外媒报道称,物联网安全研究公司Armis在蓝牙协议中发现了8个零日漏洞,这些漏洞将影响超过53亿设备--从Android.iOS.Windows以及Linux系统设备到使用短距离无线通信技术的物联网设备,利用这些蓝牙协议漏洞,Armis构建了一组攻击向量(attack vector)"BlueBorne",演示中攻击者完全接管支持蓝牙的设备,传播恶意软件,甚至建立一个"中间人"(MITM)连接. 演示中建立一个"中间人"(MITM)连接,以实现

嵌入式开发-iic中主机读取一个字节的时候,从机怎么知道什么时候给主机发送数据呢

问题描述 iic中主机读取一个字节的时候,从机怎么知道什么时候给主机发送数据呢 开发-iic中主机读取一个字节的时候,从机怎么知道什么时候给主机发送数据呢-iic多字节传输协议">如果是主机发送数据的话,我们可以控制SCL和SDA,在SCL为高电平期间,可以是SDA为稳定状态,但是主机接收时,要从机发送数据,从机怎么知道什么时候可以发送呢比如图中的程序,从机发送数据只能是在SCL_L和SCL_H之间了,从机是怎么知道的呢 解决方案 你可以看一下AT24C256这样的iic EEPROM芯片

C#上位机解析下位机传上来的数据

问题描述 求帮忙啊!!!协议数据格式:起始(1b)+设备地址(1b)+功能代码(1b)+数据(nb)+结束(1b)+CRC校验(2b)下位机传上来的数据是:AA51500008553322一个板子30个点,每个点可以点亮一个灯或者灯带,干簧管触发了下位机会给我一串上面的代码,我要根据这个代码去发送点亮这个触发点的灯:同事是写C的给我说了下大概的是说:把数据转成二进制来判断是哪个口触发了,但是我该怎么解析啊....今天第一次做上位机...水好深啊.. 解决方案 解决方案二:该回复于2016-05-

刷机大师手机版v2.0.7强化一键刷机功能

安卓手机刷机神器--刷机大师手机版持续升级,目前已更新版本至2.0.7.在此更新版本中,刷机大师手机版进一步加强了刷机适配,修复已知BUG,优化一键刷机流程:另外,刷机大师手机版2.07还重点优化了手机工具箱,加强了刷机大师手机版备份与恢复功能. 刷机大师手机版下载:http://www.mgyun.com/andromaster 刷机大师手机版2.0.7更新日志: 1.加强刷机适配,强化一键刷机功能: 2.进一步优化ROM基地,查找ROM更方便: 3.修复已知BUG,优化刷机流程: 4.优化工