ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用SEGGER Embedded Studio(SES)开发蓝牙nRF52840

2021-05-03 22:00:52  阅读:683  来源: 互联网

标签:code SES err Embedded SEGGER send buttons ERROR mouse


0. 准备

WIN10电脑一台
nrf52840开发板一套(其实如果基本蓝牙功能的话,nrf52832也行,有更小的成本)。nrf52840集成了2.4GHz的各种协议,但还是蓝牙功能比较完善。
仿真器最好用jlink v9

1. download nrf5 sdk

这个sdk解压后可以用常用的ide开发单片机。
https://www.nordicsemi.com/Software-and-tools/Software/nRF5-SDK/Download#infotabs

2. SEGGER Embedded Studio(SES)

SEGGER是jlink的公司,SES是这家公司的单片机开发环境。nrf52系列的单片机,基本国内常用的就是keil和ses了。keil需要license,ses开发nrf52840可以免license费用,只要上网申请一下,填写用户名公司电脑MAC等资料即可获得许可。
https://www.segger.com/downloads/embedded-studio

3. 运行demo

3.1 命令行交互
下载nRF5_SDK_17.0.2_d674dde\examples\ble_central_and_peripheral\experimental\ble_app_interactive可以通过串口使用命令行调用蓝牙的大部分功能

3.2 蓝牙鼠标实现移动和点击
官方demo自带鼠标移动的实例:
HID Mouse Application
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf5gs%2Fstruct%2Fnrf5gs.html&cp=1

这行是往下移动MOVEMENT_SPEED个像素的函数:mouse_movement_send(0, MOVEMENT_SPEED);

参考资料1中看到了鼠标点击需要修改输入函数:

mouse_buttons_send(1,0,0);//鼠标左键
mouse_buttons_send(0,0,0);//释放按键
mouse_buttons_send(1, 0, 0);//left
mouse_buttons_send(2, 0, 0);//right
mouse_buttons_send(4, 0, 0);//middle
mouse_buttons_send(0, 0, 0);//cancel
static void mouse_buttons_send(int8_t click, int8_t wheel, int8_t pan)
{
    uint32_t err_code;
 
    uint8_t buffer[INPUT_REP_BUTTONS_LEN];
 
    APP_ERROR_CHECK_BOOL(INPUT_REP_BUTTONS_LEN == 3);
    
    NRF_LOG_INFO("mouse_buttons_send\r\n");
    buffer[0] = click;
    buffer[1] = wheel;
    buffer[2] = pan;
 
        err_code = ble_hids_inp_rep_send(&m_hids,
                                         INPUT_REP_BUTTONS_INDEX,
                                         INPUT_REP_BUTTONS_LEN,
                                         buffer,
                                         m_conn_handle);
 
    if ((err_code != NRF_SUCCESS) &&
        (err_code != NRF_ERROR_INVALID_STATE) &&
        (err_code != NRF_ERROR_RESOURCES) &&
        (err_code != NRF_ERROR_BUSY) &&
        (err_code != BLE_ERROR_GATTS_SYS_ATTR_MISSING)
       )
    {
        APP_ERROR_HANDLER(err_code);
    }
}

4. 下载

ses准备链接jlink,发现no idcode found
排查原因,原来是线没接好。这个要接好JLINK到单片机的SWD四根线,USB连JLINK和电脑。然后Target ---> Download ... 即可实现下载。SES已经集成了jlink驱动,一般不会出现其他问题。

备注:注意nRF5 sdk中,如果自己的板子不匹配官方开发板,那么是需要修改引脚号的
开发板                        官方编号            芯片
nRF52840 DK            PCA10056            nRF52840
nRF52840 Dongle        PCA10059            nRF52840
nRF52 DK                    PCA10040            nRF52832/nRF52810
nRF51 DK                   PCA10028            nRF51422
nRF51 Dongle            PCA10032            nRF51422

 

参考资料1:nRF52832 — 基于HID实现鼠标的左击、右击和滚轮,https://blog.csdn.net/zhanghuaishu0/article/details/81783044
参考资料2:Nordic Semiconductor Infocenter

标签:code,SES,err,Embedded,SEGGER,send,buttons,ERROR,mouse
来源: https://blog.csdn.net/qq_27158179/article/details/116381025

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有