欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 基于cubemx的STM32的freertos的串口通信

基于cubemx的STM32的freertos的串口通信

2025/2/25 20:07:15 来源:https://blog.csdn.net/jacklood/article/details/141502560  浏览:    关键词:基于cubemx的STM32的freertos的串口通信

1、任务描述

               使用freertos系统实现电脑调试助手和正点原子开发板STM32F103ZET6的串口通信。

2、cubemx设置

3、程序代码

(1)添加usart1.c

#include "usart1.h"#include "usart.h"/**********重定义函数**********/struct __FILE
{int handle;};FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
void _sys_exit(int x)
{x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{while((USART1->SR&0X40)==0);//循环发送,直到发送完毕USART1->DR = (uint8_t) ch;return ch;
}//串口1发送串口屏数据send_data
void	UserUart1Send(uint8_t	*send_data,uint8_t	send_len)
{while(send_len--){HAL_UART_Transmit(&huart1,send_data++,1,20);}
}

(2)main.c中

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */#include "usart1.h"/* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD *//* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV */uint8_t Buffer[13]="hello world\r\n";uint8_t pre_rec_buf[10];uint8_t  flag=0;/* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
void MX_FREERTOS_Init(void);
/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 *///接收回调函数---接收气压数值字符
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){if(huart==&huart1){//	  	HAL_UART_Receive_IT(&huart1,(uint8_t*)pre_rec_buf,20);flag=1;
//       HAL_UART_Transmit_IT(&huart1,Buffer,sizeof(Buffer),11);
//		  	UserUart1Send(Buffer,sizeof(Buffer));
//			memset(pre_rec_buf,0,22);//			count=0;}HAL_UART_Receive_IT(&huart1,(uint8_t*)pre_rec_buf,10);}/* USER CODE END 0 *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Receive_IT(&huart1,(uint8_t*)pre_rec_buf,10);/* USER CODE END 2 */

(3)freertos.c中

/* USER CODE END Header_usart_Task02 */
void usart_Task02(void *argument)
{/* USER CODE BEGIN usart_Task02 *//* Infinite loop */for(;;){if(flag==1){UserUart1Send(Buffer,sizeof(Buffer));flag=0;}//    osDelay(1);}/* USER CODE END usart_Task02 */
}

4、调试结果

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词