织梦网站模板还原的文件在哪里专业建站工作室
2026/6/10 10:31:24 网站建设 项目流程
织梦网站模板还原的文件在哪里,专业建站工作室,宫廷计有哪些网站开发的,关于宠物的网站网页设计文章目录前言1. USART1.1. 配置串口1.1.1. 配置通讯协议1.1.2. 配置串口中断1.2. 发送数据1.3. 读取数据2. 寄存器编程实验3. 总结前言 开发板为#xff1a;野火指南者#xff0c;基于STM32F103VET6分析的例程为#xff1a;指南者\1-程序源码_教程文档\2-[野火]《STM32 HAL…文章目录前言1. USART1.1. 配置串口1.1.1. 配置通讯协议1.1.2. 配置串口中断1.2. 发送数据1.3. 读取数据2. 寄存器编程实验3. 总结前言开发板为野火指南者基于STM32F103VET6分析的例程为指南者\1-程序源码_教程文档\2-[野火]《STM32 HAL库开发实战指南》(HAL库源码)\20-USART—串口通信\USART1回显1. USART1.1. 配置串口1.1.1. 配置通讯协议通过HAL库配置USART的关键函数或数据结构如下HAL_StatusTypeDefHAL_UART_Init(UART_HandleTypeDef*huart)源码位置STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c的352行HAL_StatusTypeDefHAL_UART_Init(UART_HandleTypeDef*huart){/* Check the UART handle allocation */if(huartNULL){returnHAL_ERROR;}/* Check the parameters */if(huart-Init.HwFlowCtl!UART_HWCONTROL_NONE){/* The hardware flow control is available only for USART1, USART2 and USART3 */assert_param(IS_UART_HWFLOW_INSTANCE(huart-Instance));assert_param(IS_UART_HARDWARE_FLOW_CONTROL(huart-Init.HwFlowCtl));}else{assert_param(IS_UART_INSTANCE(huart-Instance));}assert_param(IS_UART_WORD_LENGTH(huart-Init.WordLength));#ifdefined(USART_CR1_OVER8)assert_param(IS_UART_OVERSAMPLING(huart-Init.OverSampling));#endif/* USART_CR1_OVER8 */if(huart-gStateHAL_UART_STATE_RESET){/* Allocate lock resource and initialize it */huart-LockHAL_UNLOCKED;#if(USE_HAL_UART_REGISTER_CALLBACKS1)UART_InitCallbacksToDefault(huart);if(huart-MspInitCallbackNULL){huart-MspInitCallbackHAL_UART_MspInit;}/* Init the low level hardware */huart-MspInitCallback(huart);#else/* Init the low level hardware : GPIO, CLOCK */HAL_UART_MspInit(huart);#endif/* (USE_HAL_UART_REGISTER_CALLBACKS) */}huart-gStateHAL_UART_STATE_BUSY;/* Disable the peripheral */__HAL_UART_DISABLE(huart);/* Set the UART Communication parameters */UART_SetConfig(huart);/* In asynchronous mode, the following bits must be kept cleared: - LINEN and CLKEN bits in the USART_CR2 register, - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/CLEAR_BIT(huart-Instance-CR2,(USART_CR2_LINEN|USART_CR2_CLKEN));CLEAR_BIT(huart-Instance-CR3,(USART_CR3_SCEN|USART_CR3_HDSEL|USART_CR3_IREN));/* Enable the peripheral */__HAL_UART_ENABLE(huart);/* Initialize the UART state */huart-ErrorCodeHAL_UART_ERROR_NONE;huart-gStateHAL_UART_STATE_READY;huart-RxStateHAL_UART_STATE_READY;returnHAL_OK;}假设我们传入的参数如下所示// DEBUG_USART ((USART_TypeDef *)USART1_BASE)// USART1_BASE (APB2PERIPH_BASE 0x00003800UL)// ((PERIPH_BASE 0x00010000UL) 0x00003800UL)// ((PERIPH_BASE 0x00010000UL) 0x00003800UL)// ((0x40000000UL 0x00010000UL) 0x00003800UL)// 0x40013800ULUartHandle.InstanceDEBUG_USART;// DEBUG_USART_BAUDRATE 115200UartHandle.Init.BaudRateDEBUG_USART_BAUDRATE;// UART_WORDLENGTH_8B 0x00000000UUartHandle.Init.WordLengthUART_WORDLENGTH_8B;// UART_STOPBITS_1 0x00000000UUartHandle.Init.StopBitsUART_STOPBITS_1;// UART_PARITY_NONE 0x00000000UUartHandle.Init.ParityUART_PARITY_NONE;// UART_HWCONTROL_NONE 0x00000000UUartHandle.Init.HwFlowCtlUART_HWCONTROL_NONE;// UART_MODE_TX_RX ((uint32_t)(USART_CR1_TE | USART_CR1_RE))// (USART_CR1_RE_Msk | USART_CR1_RE_Msk)// ((0x1UL USART_CR1_RE_Pos) | (0x1UL USART_CR1_RE_Pos))// ((0x1UL 3U) | (0x1UL 2U))UartHandle.Init.ModeUART_MODE_TX_RX;HAL_UART_Init(UartHandle);真正操作寄存器的代码为如下几行在这里插入代码片1.1.2. 配置串口中断通过HAL库配置USART中断的关键函数或数据结构如下源码位置STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h的538行#define__HAL_UART_ENABLE_IT(__HANDLE__,__INTERRUPT__)((((__INTERRUPT__)28U)UART_CR1_REG_INDEX)?((__HANDLE__)-Instance-CR1|((__INTERRUPT__)UART_IT_MASK)):\(((__INTERRUPT__)28U)UART_CR2_REG_INDEX)?((__HANDLE__)-Instance-CR2|((__INTERRUPT__)UART_IT_MASK)):\((__HANDLE__)-Instance-CR3|((__INTERRUPT__)UART_IT_MASK)))假设我们传入的参数如下所示// DEBUG_USART ((USART_TypeDef *)USART1_BASE)// USART1_BASE (APB2PERIPH_BASE 0x00003800UL)// ((PERIPH_BASE 0x00010000UL) 0x00003800UL)// ((PERIPH_BASE 0x00010000UL) 0x00003800UL)// ((0x40000000UL 0x00010000UL) 0x00003800UL)// 0x40013800ULUartHandle.InstanceDEBUG_USART;// DEBUG_USART_BAUDRATE 115200UartHandle.Init.BaudRateDEBUG_USART_BAUDRATE;// UART_WORDLENGTH_8B 0x00000000UUartHandle.Init.WordLengthUART_WORDLENGTH_8B;// UART_STOPBITS_1 0x00000000UUartHandle.Init.StopBitsUART_STOPBITS_1;// UART_PARITY_NONE 0x00000000UUartHandle.Init.ParityUART_PARITY_NONE;// UART_HWCONTROL_NONE 0x00000000UUartHandle.Init.HwFlowCtlUART_HWCONTROL_NONE;// UART_MODE_TX_RX ((uint32_t)(USART_CR1_TE | USART_CR1_RE))// (USART_CR1_RE_Msk | USART_CR1_RE_Msk)// ((0x1UL USART_CR1_RE_Pos) | (0x1UL USART_CR1_RE_Pos))// ((0x1UL 3U) | (0x1UL 2U))UartHandle.Init.ModeUART_MODE_TX_RX;// UART_IT_RXNE ((uint32_t)(UART_CR1_REG_INDEX 28U | USART_CR1_RXNEIE))// ((uint32_t)(1U 28U | (0x1UL USART_CR1_RXNEIE_Pos)))// ((uint32_t)(1U 28U | (0x1UL 5U)))__HAL_UART_ENABLE_IT(UartHandle,UART_IT_RXNE);1.2. 发送数据1.3. 读取数据2. 寄存器编程实验3. 总结

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询