spi 补充
uart通讯: 通讯双方波特率,帧格式必须一致
spi通讯: 通讯双方极性,相位一致
Lcd
/*************************************************
函数名:Lcd_Clear
功能:全屏清屏函数
入参函数:填充颜色COLOR
返回值:无
*************************************************/
void Lcd_Clear(uint16_t Color)
{ unsigned int i,m;Lcd_SetRegion(0,0,X_MAX_PIXEL-1,Y_MAX_PIXEL-1);// 设置显示区域(整个屏幕)Lcd_WriteIndex(0x2C);//发送命令for(i=0;i<X_MAX_PIXEL;i++)for(m=0;m<Y_MAX_PIXEL;m++){ LCD_WriteData_16Bit(Color);}
}
uart-dma
/****main.c***/__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE); //使能uart1 的空闲中断__HAL_UART_CLEAR_FLAG(&huart1,UART_CLEAR_IDLEF); // 清除uart1 的空闲中断标志HAL_UART_Receive_DMA(&huart1,uartdmabuff,80); //dma 方式接收最多80个字节,接收到uartdmabuffif(uartdmafinished) //判断dma是否结束{for(i = 0; i < dmalength; i++) //打印dma 接收的数据{printf("%c",uartdmabuff[i]);}uartdmafinished = 0;//HAL_UART_Receive_DMA(&huart1,uartdmabuff,80); // 启动下次dma 接收}/***stm32f0xx_it.c***/
void USART1_IRQHandler(void)
{/* USER CODE BEGIN USART1_IRQn 0 */if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE) == SET)//uart1 是否空闲, 说明dma 结束了{__HAL_UART_CLEAR_FLAG(&huart1,UART_CLEAR_IDLEF); // 清除uart1 的空闲中断标志HAL_UART_DMAStop(&huart1);//停止dma接收uartdmafinished = 1;//置dma 结束的标志dmalength = 80-hdma_usart1_rx.Instance->CNDTR;//得到此次dma接收的字节数//该寄存器hdma_usart1_rx.Instance->CNDTR 初始值80, 收到n个字节, 该寄存器为80-n,printf("finished\r\n");}/* USER CODE END USART1_IRQn 0 */HAL_UART_IRQHandler(&huart1);/* USER CODE BEGIN USART1_IRQn 1 *//* USER CODE END USART1_IRQn 1 */
}
NB-IoT 介绍
Narrow Band Internet of Things 窄带物联网
At指令
模块与计算机之间的通信协议是一些AT指令集
AT+CFUN=0关闭射频功能
AT+CFUN=1开启射频功能
AT+NBAND?查询模组配置频段
AT+NBAND=5配置模组为电信频段
AT+CGSN=1 查询IMEI号
AT+CGSN=1,201612091450303 设置IMEI号
AT+NCDP=XX.XX.XX.XX 设置 IoT 平台 IP 地址(非 COAP 协议可以不配置)
串口透传,格西烽火(使用At指令)
PC 和 stm32 的uart1 通讯
nb 模块和 stm32 的uart2 通讯
stm32 把uart1 收到的数据, 从uart2 发出,
stm32 把uart2 收到的数据, 从 uart1 发出,实现透传
stm32 实现透传:
void USART2_IRQHandler(void){/* USER CODE BEGIN USART2_IRQn 0 */if(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE) == SET){while((USART1->ISR&0x40) == 0) ;USART1->TDR = USART2->RDR;}