青与鱼博客

@钦与鱼

November 15th 2018 / 玩玩编程

stm32 HAL库使用USART

HAL库的使用

首先,初始化usart

        uart1Handler.Instance=USART1; //USART1
    uart1Handler.Init.BaudRate=115200; //
    uart1Handler.Init.WordLength=UART_WORDLENGTH_8B; //data length 8B
    uart1Handler.Init.StopBits=UART_STOPBITS_1; //stop bit 1
    uart1Handler.Init.Parity=UART_PARITY_NONE; //no parity
    uart1Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE; //no hard control
    uart1Handler.Init.Mode=UART_MODE_TX_RX; //enable rx and tx
    HAL_UART_Init(&uart1Handler); //HAL_UART_Init() 
        HAL_UART_Receive_IT(&uart1Handler, (u8 *)aRxBuffer, 1);//开始接收字符,如果你只是发送,这里可以不用,这个函数是异步接收,aRxBuffer是个自定义的字符数组,参数1表示接收到一个字符后就调用一个USART1_IRQHandler函数,具体要接收几个字符,自己设置。**同时,这个函数有个坑,只会执行一次,所以接受完数据后,要再执行**

执行HAL_UART_Init时,他会自动执行一个HAL_UART_MspInit()函数,所以我们要定义一个这样的函数:


阅读更多......

November 12th 2018 / 玩玩编程

nb发送与接收数据

AT+NSOCR=DGRAM,17,5683,1 创建UDP SOCKET 传输信道,DGRAM和17固定,5683代表本地端口号,1代表使能接收下行数据;最多可创建7个SOCKET传输信道,返回数值代表信号ID号,在发送和接收数据时需要指定

0 
OK

AT+NSOST=0,...,####,3,303132 发送UDP数据,0代表UDP SOCKET信道ID,...代表远程服务器的IP地址(公网IP地址),####代表远程服务器端口号,3代表发送的字符个数(发送了3个字符),303132代表“012”3个hex表示的字符;返回值代表成功从0信道发送了3个字节的数据

+NSONMI:0,67 信息代表模块接收到新的数据,需要读取,如果不及时读取,接收到下一条数据,将不会主动上报该信息;但可以连续读取;0代表 UDP SOKECT信道,67代表有67个字节数据需要读取。

AT+NSORF=0,3 读取数据;0代表UDP SOCKET 信道,3代表需要读取数据字节长度;需要从返回值中提取出有效数据303132,代表字符“012”

x