所需配置的引脚,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