郑州企业做网站h汉狮,商城系统网站建设,wordpress登入不进去,免费制作自己的微网站一、基础配置 (1) PA9和PA10就是串口对应在单片机上的端口 注意#xff1a;一定要先选择PA9的TX和PA10的RX#xff0c;再去打开异步的模式 (2) 二、查看单片机的端口连接至电脑的哪里
#xff08;1#xff09;此电脑-右击属性 #xff08;2#xff09;找到端…一、基础配置 (1) PA9和PA10就是串口对应在单片机上的端口 注意一定要先选择PA9的TX和PA10的RX再去打开异步的模式 (2) 二、查看单片机的端口连接至电脑的哪里
1此电脑-右击属性 2找到端口 若有很多端口不确定是哪一个端口那就先把设备给取下然后再插入看多出哪个哪个就是串口 三、打开串口助手
1串口助手在D盘的蓝桥杯速成杨心愉里面 (2)调试串口 要选一个是板子的串口号 打开串口之后这里就变红了 3还是原来的串口助手好用 四、代码 USART1
1简单理论讲解 UART是工作在异步的模式下USART可以工作在同步和异步的模式下
HAL_UART_Receive() 这个是通过查询的方式去接收数据
HAL_UART_Receive_DMA() 这个是通过DMA的方式去接收数据
HAL_UART_Receive_IT() 这个就是通过中断的方式去接收数据 发送数据也是同样 2简单代码 2.1 首先要定义一个数组 但是字符串的数据不能超过30可以小于
uint8_t temp_txbuffer[30]{Real Magic Origin};
2.2 执行语句 HAL_UART_Transmit (huart1,temp_txbuffer,17,10); 首先是句柄然后是数组的名称再就是传输字符串的字符数最后是超时时间单位是毫秒 /* USER CODE BEGIN 2 */uint32_t temp_cnt0;/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if (HAL_GetTick()-temp_cnt 1000){HAL_UART_Transmit (huart1,temp_txbuffer,17,10);temp_cnt HAL_GetTick();}} 先定义一个初始数据然后加一个判断条件当单片机获取到的数值减去上一次获取到的数值大于1毫秒之后再执行发送数据的指令。也就相当于是每过1毫秒发送一次数据 但是使用HAL_UART_Transmit()这个函数因为传输的数据是17位假设把115200变成9600那么用1除以9600所算出来传输一个字符的时间就会变大当然传输一个字符所需要的时间还要算上停止位、起始位、数据位所以每次传输10个位那么原来的延时10毫秒就会导致接收数据不完整就只能一半一半的接收。又因为波特率是可以随时改变的那么我们就应该要换一个函数 但是如果我们使用串口发送的中断函数那么我们就不需要考虑后面的延时函数DMA也是一样这句函数就是执行完这句话的发送任务之后就不需要等待10毫秒它就会直接出来完整的发送数据这种叫非阻塞型发送方式上面那一个就是阻塞型发送方式。阻塞型就是如果不等10毫秒就不会执行下面的语句。就相当于刚发到O这个字母正好10毫秒过去了那么就开始过1秒之后再发送接下来的数据。非阻塞型不太明白 3代码基本注释
HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) 这个需要知道接收数据的字符串长度及其时间
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) 这两个虽然不需要知道接收到的时间但是需要知道接收到的长度所以使用起来还是不是那么的方便