所需配置的引腳,SPI傳輸,PG13復位(輸出引腳,推挽輸出),PE2忙碌(輸入引腳,浮空輸入)PE6PE5輸出。
若利用延時處理按鍵消抖,hal庫里用systick中斷實現延時,如果想在按鍵觸發中斷中使用延時,就得把默認的systick優先級由默認的15升高,這里systick升到2,gpio的按鍵為3.
項目需求:
我們需要兩個支持LoRa的開發板來完成實驗:一個普通節點的角色,一個網關角色。在普通節點上,當我們按下按鍵時,給網關發送數據。網關收到數據后給普通節點回饋信息。
????????調用lora的官方庫驅動,src里是封裝好的驅動接口層,interface是通訊的接口層。一般修改interface的源代碼。把下面4個文件copy到項目的Inf/lora目錄下, 并把文件driver_llcc68_interface_template.c改名為driver_llcc68_interface.c
1.?driver_llcc68_interface.h中需增改部分:將hal庫配置的gpio和拉高拉低操作宏定義進來。
2.?driver_llcc68_interface.c中需增改部分:(這種單片機的驅動方式很像海思芯片中sensor驅動)
uint8_t llcc68_interface_spi_init(void)
{// hal庫配置時已經在main函數中已經初始完成,這里省略return 0;
}uint8_t llcc68_interface_spi_deinit(void)
{//或者把hal庫的底層實現放進來HAL_StatusTypeDef status = HAL_SPI_DeInit(&hspi1);return status == HAL_OK ? 0 : 1;
}
uint8_t llcc68_interface_spi_write_read(uint8_t *in_buf, uint32_t in_len,uint8_t *out_buf, uint32_t out_len)
{//lora的發送相當于32的接收,反之亦然// 1. 片選使能/*SPI 主機通常會為每個從設備分配一條獨立的片選線CS,從設備的CS接入主機的GPIO或專用片選接口。電平邏輯:一般來說,片選信號通常為低電平有效,即從設備被選中;高電平從設備處于未選中狀態。*/CS_LOW;// 2. 發送數據if (in_len > 0){HAL_StatusTypeDef status = HAL_SPI_Transmit(&hspi1, in_buf, in_len, 1000);if (status != HAL_OK){CS_HIGH;return 1;}}// 3. 接收數據if (out_len > 0){HAL_StatusTypeDef status = HAL_SPI_Receive(&hspi1, out_buf, out_len, 1000);if (status != HAL_OK){CS_HIGH;return 1;}}// 4. 片選失效CS_HIGH;return 0;
}
111