转:http://blog.csdn.net/lorain_lynies/article/details/52038640CSR1010 I/O开发须知:
关于I/O操作的函数库被定义在头文件<pio.h>中,查阅函数库我们需要用到一下几个函数:
1、设置引脚模式,我们需要将其设为user模式。

  1. void  PioSetModes (uint32 mask, pio_mode mode)

2、设置方向,分为输入和输出,这里我们需要将button引脚设置为输入,led引脚设置为输出。

  1. void  PioSetDir (uint16 pio, bool output)

3、设置电流相关,对于led引脚需要设置为允许大电流模式,button引脚设置为弱电流模式。

  1. void  PioSetPullModes (uint32 mask, pio_pull_mode mode)

4、设置I/O产生相关事件,此处使用sys_event_pio_changed事件。

  1. void  PioSetEventMask (uint32 mask, pio_event_mode mode)

每次产生事件都会调用下面的系统函数来对事件进行响应,其具体操作由开发者编写。

  1. 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)。

示例代码如下:

  1. #include <main.h>
  2. #include <pio.h>
  3. #include <ls_app_if.h>
  4. #define PIO_BUTTON      11
  5. #define PIO_LED0        10
  6. #define PIO_LED1        4
  7. #define PIO_DIR_OUTPUT  TRUE
  8. #define PIO_DIR_INPUT   FALSE
  9. void AppPowerOnReset(void)
  10. {
  11. }
  12. void AppInit(sleep_state last_sleep_state)
  13. {
  14. PioSetModes((1UL << PIO_LED0) | (1UL << PIO_LED1), pio_mode_user);
  15. PioSetDir(PIO_LED0, PIO_DIR_OUTPUT);
  16. PioSetDir(PIO_LED1, PIO_DIR_OUTPUT);
  17. PioSetPullModes((1UL << PIO_LED0) | (1UL << PIO_LED1), pio_mode_strong_pull_up);
  18. PioSetMode(PIO_BUTTON, pio_mode_user);
  19. PioSetDir(PIO_BUTTON, PIO_DIR_INPUT);
  20. PioSetPullModes((1UL << PIO_BUTTON), pio_mode_weak_pull_up);
  21. PioSetEventMask((1UL << PIO_BUTTON), pio_event_mode_both);
  22. }
  23. void AppProcessSystemEvent(sys_event_id id, void *data)
  24. {
  25. if (id == sys_event_pio_changed)
  26. {
  27. const pio_changed_data *pPioData = (const pio_changed_data *)data;
  28. if (pPioData->pio_cause & (1UL << PIO_BUTTON) )
  29. {
  30. if (pPioData->pio_state & (1UL << PIO_BUTTON))
  31. {
  32. PioSets((1UL << PIO_LED0) | (1UL << PIO_LED1), 0xffffUL);
  33. }
  34. else
  35. {
  36. PioSets((1UL << PIO_LED0) | (1UL << PIO_LED1), 0UL);
  37. }
  38. }
  39. }
  40. }
  41. bool AppProcessLmEvent(lm_event_code event_code, LM_EVENT_T *event_data)
  42. {
  43. return TRUE;
  44. }

CSR1010 sdk蓝牙的更多相关文章

  1. Android 开发日常积累

    Android 集合 Android 开源项目分类汇总 扔物线的 HenCoder 高级 Android 教程 hencoder HenCoder:给高级 Android 工程师的进阶手册 Andro ...

  2. 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

    实现的功能: l  APP控制月球灯 l  本地月球灯控制 l  APP控制"大白"颜色,实现各种颜色变身 l  门状态传感器状态APP显示 l  网络状态指示灯,连接服务器长亮, ...

  3. nRF Connect SDK(NCS)/Zephyr固件升级详解 – 重点讲述MCUboot和蓝牙空中升级

    如何在nRF Connect SDK(NCS)中实现蓝牙空中升级?MCUboot和B0两个Bootloader有什么区别?MCUboot升级使用的image格式是怎么样的?什么是SMP协议?CBOR编 ...

  4. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  5. BluetoothChat用于蓝牙串口通信的修改方法

    本人最近在研究嵌入式的串口通信,任务是要写一个手机端的遥控器用来遥控双轮平衡小车.界面只用了一个小时就写好了,重要的问题是如何与板子所带的SPP-CA蓝牙模块进行通信. SPP-CA模块自带代码,在这 ...

  6. [nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

    蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体 ...

  7. iOS--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook等系统服务开发汇总

    iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: ...

  8. android蓝牙打印机

    您还未登录!|登录|注册|帮助 首页 业界 移动 云计算 研发 论坛 博客 下载 更多 reality_jie的专栏 编程的过程是一种微妙的享受       目录视图 摘要视图 订阅 CSDN2013 ...

  9. [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...

    一.问题: 之前写的一款安卓4.4的应用程序,用来连接蓝牙BLE,而现在拿出来用新的AS编译(此时SDK为6.0,手机也是6.0)应用程序并不能搜索到蓝牙,查看log总是报权限错误: Need ACC ...

随机推荐

  1. Photoshop脚本之调试

    系统:mac 创建test.scpt和test.jsx command+空格,打开 脚本编辑器(applescript) 脚本编辑器打开test.scpt 输入: tell application & ...

  2. Codeforces Round #398 (Div. 2) BCD

    B:The Queue 题目大意:你要去办签证,那里上班时间是[s,t), 你知道那一天有n个人会来办签证,他们分别是在时间点ai来的.每个人办业务要花相同的时间x,问你什么时候来 排队等待的时间最少 ...

  3. 支付宝热补丁技术— AndFix原理[阿里Hao]

    本文由嵌入式企鹅圈原创团队成员.阿里资深project师Hao分享. 上次我们介绍了用dexposed方案实施热补丁的原理.它本质上就是hook要改动的函数.这样一来在正式版本号公布时就不能直接拿热补 ...

  4. boot2docker里报"no space left on device" error的解决方法

    docker中pull远程image时:报 no space left on device virtualbox中调大虚拟内存即可.. 之前调的硬盘大小...

  5. linq to sql 动态构建查询表达式树

    通过Expression类进行动态构造lamda表达式. 实现了以下几种类型,好了代码说话: public Expression<Func<T, bool>> GetAndLa ...

  6. 关于Linq to Sql 中的left join 中defaultifempty的相关注意事项

    在使用Linq to Sql的时候,进行两个表的左连接的时候要注意defaultifempty的使用,这个函数本来的意思即是:如果为空则使用默认值代替,默认值为 NULL ,当然也可以使用defaul ...

  7. AsyncTask工作机制简介

    昨天写的图片的三级缓存,假设有兴趣,能够去看下,浅谈图片载入的三级缓存原理(一) http://blog.csdn.net/wuyinlei/article/details/50606455 在里面我 ...

  8. 七牛上传ipa后自动生成plist文件

    1.利用模板技术动态生成plist文件的内容:(模板内容和data替换为plist需要的内容) //artTemplate <script src="js/template.js&qu ...

  9. LUA速成教程

    說明: 1.該教程適合對編程有一定了解的人員. 2.該教程在WINDOWS下實驗. 切入正題, 1.首先下載Notepad++,工欲善其事,必先利其器,然後安裝NotePad++的插件NppExec. ...

  10. scaffolding —— 脚手架(转)

    Scaffolding — 基架 基于数据库架构生成网页模板的过程.在 ASP .NET 中,动态数据使用基架来简化基于 Web 的 UI 的生成过程.用户可以通过这种 UI 来查看和更新数据库.   ...