CSR1010 sdk蓝牙
转:http://blog.csdn.net/lorain_lynies/article/details/52038640CSR1010 I/O开发须知:
关于I/O操作的函数库被定义在头文件<pio.h>中,查阅函数库我们需要用到一下几个函数:
1、设置引脚模式,我们需要将其设为user模式。
- void PioSetModes (uint32 mask, pio_mode mode)
2、设置方向,分为输入和输出,这里我们需要将button引脚设置为输入,led引脚设置为输出。
- void PioSetDir (uint16 pio, bool output)
3、设置电流相关,对于led引脚需要设置为允许大电流模式,button引脚设置为弱电流模式。
- void PioSetPullModes (uint32 mask, pio_pull_mode mode)
4、设置I/O产生相关事件,此处使用sys_event_pio_changed事件。
- void PioSetEventMask (uint32 mask, pio_event_mode mode)
每次产生事件都会调用下面的系统函数来对事件进行响应,其具体操作由开发者编写。
- void AppProcessSystemEvent(sys_event_id id, void *data)
5、使用CSR uEnergy SDK进行开发时,没有main()函数,代码先执行void AppPowerOnReset(void),然后执行void AppInit(sleep_state last_sleep_state)进行初始化工作,之后由系统事件触发执行void AppProcessSystemEvent(sys_event_id id, void *data)和bool AppProcessLmEvent(lm_event_code event_code, LM_EVENT_T *event_data)。
示例代码如下:
- #include <main.h>
- #include <pio.h>
- #include <ls_app_if.h>
- #define PIO_BUTTON 11
- #define PIO_LED0 10
- #define PIO_LED1 4
- #define PIO_DIR_OUTPUT TRUE
- #define PIO_DIR_INPUT FALSE
- void AppPowerOnReset(void)
- {
- }
- void AppInit(sleep_state last_sleep_state)
- {
- PioSetModes((1UL << PIO_LED0) | (1UL << PIO_LED1), pio_mode_user);
- PioSetDir(PIO_LED0, PIO_DIR_OUTPUT);
- PioSetDir(PIO_LED1, PIO_DIR_OUTPUT);
- PioSetPullModes((1UL << PIO_LED0) | (1UL << PIO_LED1), pio_mode_strong_pull_up);
- PioSetMode(PIO_BUTTON, pio_mode_user);
- PioSetDir(PIO_BUTTON, PIO_DIR_INPUT);
- PioSetPullModes((1UL << PIO_BUTTON), pio_mode_weak_pull_up);
- PioSetEventMask((1UL << PIO_BUTTON), pio_event_mode_both);
- }
- void AppProcessSystemEvent(sys_event_id id, void *data)
- {
- if (id == sys_event_pio_changed)
- {
- const pio_changed_data *pPioData = (const pio_changed_data *)data;
- if (pPioData->pio_cause & (1UL << PIO_BUTTON) )
- {
- if (pPioData->pio_state & (1UL << PIO_BUTTON))
- {
- PioSets((1UL << PIO_LED0) | (1UL << PIO_LED1), 0xffffUL);
- }
- else
- {
- PioSets((1UL << PIO_LED0) | (1UL << PIO_LED1), 0UL);
- }
- }
- }
- }
- bool AppProcessLmEvent(lm_event_code event_code, LM_EVENT_T *event_data)
- {
- return TRUE;
- }

CSR1010 sdk蓝牙的更多相关文章
- Android 开发日常积累
Android 集合 Android 开源项目分类汇总 扔物线的 HenCoder 高级 Android 教程 hencoder HenCoder:给高级 Android 工程师的进阶手册 Andro ...
- 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)
实现的功能: l APP控制月球灯 l 本地月球灯控制 l APP控制"大白"颜色,实现各种颜色变身 l 门状态传感器状态APP显示 l 网络状态指示灯,连接服务器长亮, ...
- nRF Connect SDK(NCS)/Zephyr固件升级详解 – 重点讲述MCUboot和蓝牙空中升级
如何在nRF Connect SDK(NCS)中实现蓝牙空中升级?MCUboot和B0两个Bootloader有什么区别?MCUboot升级使用的image格式是怎么样的?什么是SMP协议?CBOR编 ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
- BluetoothChat用于蓝牙串口通信的修改方法
本人最近在研究嵌入式的串口通信,任务是要写一个手机端的遥控器用来遥控双轮平衡小车.界面只用了一个小时就写好了,重要的问题是如何与板子所带的SPP-CA蓝牙模块进行通信. SPP-CA模块自带代码,在这 ...
- [nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)
蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体 ...
- iOS--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook等系统服务开发汇总
iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: ...
- android蓝牙打印机
您还未登录!|登录|注册|帮助 首页 业界 移动 云计算 研发 论坛 博客 下载 更多 reality_jie的专栏 编程的过程是一种微妙的享受 目录视图 摘要视图 订阅 CSDN2013 ...
- [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...
一.问题: 之前写的一款安卓4.4的应用程序,用来连接蓝牙BLE,而现在拿出来用新的AS编译(此时SDK为6.0,手机也是6.0)应用程序并不能搜索到蓝牙,查看log总是报权限错误: Need ACC ...
随机推荐
- 第一百八十八节,jQuery,选项卡 UI
jQueryUI,选项卡 UI 学习要点: 1.使用 tabs 2.修改 tabs 样式 3.tabs()方法的属性 4.tabs()方法的事件 5.tabs 中使用 on 选项卡(tab),是一种能 ...
- 问题解决 —— Http Status 500
在完成JavaWeb项目的过程中经常会出现这种错误 500:指的是服务器内部错误 通常遇到这种情况,我会去看控制台的信息,那里肯定会有提示,空指针(值没有传过去),或者java.sql.SQLExce ...
- 自己动手写ORM(01):解析表达式树生成Sql碎片
在EF中,我们查询数据时可能会用拉姆达表达式 Where(Func<T,ture> func)这个方法来筛选数据,例如,我们定义一个User实体类 public class User { ...
- node c++ addon注意事项
The module_name needs to match the filename of the final binary (minus the .node suffix).
- iOS -- 全局导航栏返回键
[UINavigationBar appearance].backIndicatorTransitionMaskImage = [UIImage imageNamed:@"backArrow ...
- Servlet注解
在Servle2.5能够使用注解 在web.xml的<web-app>标签下有一属性metadata-complete="true"在设置true时,Servlet中的 ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)
(五)列表条目(SPListItem) SharePoint中数据的存储基本上都是通过列表条目来完成(文档库中的文档也是一种特殊的列表条目),因此在SharePoint应用开发中,最终是要和列表条目打 ...
- 小白学linux命令
小白是景女神全栈开发股份有限公司的一名财务实习员工,经过3个月的实习期,小白是过五关斩六将啊!终于成为了公司的一名正式员工,而且收到了景总亲自发来贺喜的邮件:“欢迎你加入大家庭,公司也本着员工全面发展 ...
- Linux下安装MongoDB全程记录
1.下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.6.0.tgz 2.解压缩 [root@loca ...
- python多线程与多进程的区别
在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie).所以,有必要对每个Process对象调用join()方法 (实际上等同于wait).对于多 ...