[url=home.php?mod=space&uid=760190]@21小跑堂 #申请原创#[/url]
引: 由于项目需要,需要使用到CH583M来进行项目开发,对于MounRiver Studio开发环境在之前的文章中已经进行了详细的说明,这里就不再赘述。从沁恒原厂申请了CH583M-R0-1V1的开发板。 一、CH583M资源评估
资料在官网可以直接进行下载。
二、建立第一个工程文件
将官网的开发板资料包下载,解压到D盘的文件夹。
我们可以看见文件夹的list文件很多,有很多都不是项目需要的文件。在开发的时候,完全可以按照需要进行拷贝,下面就说一下拷贝的过程。
第一步:将项目命名为YT-583(当然这个名字可以根据自己的需要进行命名) 在文件夹中建立两个空文件夹,命名为BLE和SRC文件夹,如上图所示。
打开资料包中的BLE文件夹,位置在EVT-->EXAM-->BLE文件夹下。把HAL文件夹和LIB文件夹拷贝到BLE文件夹中。
拷贝之后如下图:
然后将我们需要的文件进行拷贝:
拷贝之后,更改文件夹的名字为project,同时将文件夹内的工程名字也做相应的更改。
第二步:将资料包的SRC文件拷贝到我们建立的文件夹中。
拷贝之后,如下图所示:
第三步:运行项目,找到刚刚我们重新命名的project工程文件双击运行。 系统会自动弹出开发环境MRS 如果不习惯英文版本的,可以进行中文版的切换。帮助-->语言-->选择需要的语言,简体中文还是English。
第四步:运行文件
点击下面的图标,或者直接Shift+F7。 编译之后,会看见0个错误0个警告。
至此,最简单的例子程序就建立完成了。
三、名称的更改 找到peripheral.c文件,我们将下面标红的地方进行更改,0x12代表的是后面字符的长度,记得里面的GAP_ADTYPE...也算一个字符。
更改为YT-CH583M,不能忘记更改len
四、需要修改几个文件中的内容
在下面的函数中: uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events) 按照原有的格式添加任务。 首先在文件中增加以下代码
//peripheral.H#define SBP_START_DEVICE_EVT 0x0001#define SBP_PERIODIC_EVT 0x0002#define SBP_READ_RSSI_EVT 0x0004#define SBP_PARAM_UPDATE_EVT 0x0008#define SBP_PHY_UPDATE_EVT 0x0010#define YT_TEST_EVT 0x0020 然后在刚刚提到的函数中增加以下代码
//peripheral.c//构建ble uart service callback handler函数void on_bleuartServiceEvt(uint16_t connection_handle,ble_uart_evt_t *p_evt)//函数void Peripheral_Init()中添加服务ble_uart_add_service(on_bleuartServiceEvt);//函数uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)中添加事件if(events & YT_TEST_EVT){ uint8_t send_result = SUCCESS; uint16_t cuntest = 0; noti.len = 6; noti.pValue = GATT_bm_alloc(peripheralConnList.connHandle, ATT_HANDLE_VALUE_NOTI, noti.len, NULL, 0 ); noti.pValue[0]='L'; noti.pValue[1]='L'; noti.pValue[2]='S'; noti.pValue[3]='D'; noti.pValue[4]='J'; noti.pValue[5]=' '; if(noti.pValue != NULL) { send_result = simpleProfile_Notify( peripheralConnList.connHandle, ¬i); if(send_result==SUCCESS) { tmos_start_task( Peripheral_TaskID, YT_TEST_EVT,1600); } else { tmos_stop_task( Peripheral_TaskID, YT_TEST_EVT); GATT_bm_free( (gattMsg_t *)¬i, ATT_HANDLE_VALUE_NOTI ); } } return (events ^ YT_TEST_EVT); } 在gattprofile.c文件中构建以下几个函数,具体的函数内容,可以参考沁恒的手册进行构建。 //gattprofile.Cstatic bStatus_t ble_uart_ReadAttrCB( uint16 connHandle, gattAttribute_t *pAttr, uint8 *pValue, uint16 *pLen, uint16 offset, uint16 maxLen,uint8 method )static bStatus_t ble_uart_WriteAttrCB( uint16 connHandle, gattAttribute_t *pAttr, uint8 *pValue, uint16 len, uint16 offset,uint8 method )static void ble_uart_HandleConnStatusCB ( uint16 connHandle, uint8 changeType )bStatus_t ble_uart_add_service( ble_uart_ProfileChangeCB_t cb)bStatus_t ble_uart_notify( uint16 connHandle, attHandleValueNoti_t *pNoti, uint8 taskId )五、下载设置
点击闪存-->下载配置,然后根据自己的需要进行勾选,选择操作。 连接好仿真器和开发板。
进行程序下载。
六、查看结果
我们打开沁恒的windows软件WCHBleDemo。
点击刷新设备,然后选中YT-CH583M,打开设备。
点击获取服务,选择FFF0,点击获取特征,选择FFF1,点击获取操作,订阅。就可以在接收区看见LLSDJ在不断传输。 结: 沁恒的芯片还是很好用的,协议栈也不是很复杂,移植也很方便。
|
详细介绍在MounRiver Studio开发环境下的工程搭建,但是注意代码部分可用代码编辑器,否则造成代码错乱,无任何可读性