本文以simpleBlePeripheral工程为例,讲解BLE工程开发。
文中出现的BLE相关名词将会以黑色加粗字体标记,但不会做详细解释,请大家搜索相关关键字进一步了解。
1、main.c文件
以main函数为开始介绍:
int main(void)
{
watchdog_config(WDG_2S); // 看门狗初始化
g_system_clk = SYS_CLK_XTAL_16M;// 系统主频选择,BLE支持主频为:SYS_CLK_XTAL_16M,
// SYS_CLK_DBL_32M,SYS_CLK_DLL_48M,SYS_CLK_DLL_64M
g_clk32K_config = CLK_32K_RCOSC;// 选择RTC时钟
#if(FLASH_PROTECT_FEATURE == 1)
hal_flash_lock();
#endif
drv_irq_init();
init_config();
extern void ll_patch_slave(void);
ll_patch_slave();
hal_rfphy_init(); // RF初始化
hal_init(); // hal层初始化
// rf_DTM_RX_rfoffset_calibration(); // 量产频偏矫正
#if 0
if(hal_gpio_read(P20)==1)
rf_phy_direct_test();
#endif
LOG("SDK Version ID %08x \n",SDK_VER_RELEASE_ID);
LOG("rfClk %d rcClk %d sysClk %d tpCap[%02x %02x]\n",g_rfPhyClkSel,g_clk32K_config,g_system_clk,g_rfPhyTpCal0,g_rfPhyTpCal1);
LOG("sizeof(struct ll_pkt_desc) = %d, buf size = %d\n", sizeof(struct ll_pkt_desc), BLE_CONN_BUF_SIZE);
LOG("sizeof(g_pConnectionBuffer) = %d, sizeof(pConnContext) = %d, sizeof(largeHeap)=%d \n",\
sizeof(g_pConnectionBuffer), sizeof(pConnContext),sizeof(g_largeHeap));
LOG("[REST CAUSE] %d\n ",g_system_reset_cause);
app_main(); // 任务层
}
main中有需要配置的是:
(1)看门狗;
(2)主频,默认使用16MHz主频,在性能要求比较高的情况下需要更改主频;
static void hal_rfphy_init(void)
{
//Watchdog_Init(NULL);
//============config the txPower
g_rfPhyTxPower = RF_PHY_TX_POWER_0DBM ; // 发射功率,可以修改
//=======