您的位置:首页 > 健康 > 养生 > 客户为什么需要建站服务_哈尔滨建站_优化关键词规则_南京今天重大新闻事件

客户为什么需要建站服务_哈尔滨建站_优化关键词规则_南京今天重大新闻事件

2025/3/13 0:41:50 来源:https://blog.csdn.net/2201_75297369/article/details/143318547  浏览:    关键词:客户为什么需要建站服务_哈尔滨建站_优化关键词规则_南京今天重大新闻事件
客户为什么需要建站服务_哈尔滨建站_优化关键词规则_南京今天重大新闻事件

时间:2024.10.29

参考资料:

《零死角玩转STM32》“USART--串口通信”章节

编程是从GPIO输出-使用固件库点亮LED灯的基础上开始

一、学习内容

1、STM32串口初始化结构体和固件库

1.1 USART初始化结构体 

/** * @brief  USART Init Structure definition  */ typedef struct
{uint32_t USART_BaudRate;            /*!< This member configures the USART communication baud rate.The baud rate is computed using the following formula:- IntegerDivider = ((PCLKx) / (16 * (USART_InitStruct->USART_BaudRate)))- FractionalDivider = ((IntegerDivider - ((u32) IntegerDivider)) * 16) + 0.5 */uint16_t USART_WordLength;          /*!< Specifies the number of data bits transmitted or received in a frame.This parameter can be a value of @ref USART_Word_Length */uint16_t USART_StopBits;            /*!< Specifies the number of stop bits transmitted.This parameter can be a value of @ref USART_Stop_Bits */uint16_t USART_Parity;              /*!< Specifies the parity mode.This parameter can be a value of @ref USART_Parity@note When parity is enabled, the computed parity is insertedat the MSB position of the transmitted data (9th bit whenthe word length is set to 9 data bits; 8th bit when theword length is set to 8 data bits). */uint16_t USART_Mode;                /*!< Specifies wether the Receive or Transmit mode is enabled or disabled.This parameter can be a value of @ref USART_Mode */uint16_t USART_HardwareFlowControl; /*!< Specifies wether the hardware flow control mode is enabledor disabled.This parameter can be a value of @ref USART_Hardware_Flow_Control */
} USART_InitTypeDef;

 形参定义和可选的值

/** @defgroup USART_Word_Length * @{*/ #define USART_WordLength_8b                  ((uint16_t)0x0000)
#define USART_WordLength_9b                  ((uint16_t)0x1000)#define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \((LENGTH) == USART_WordLength_9b))
/*** @}*/ /** @defgroup USART_Stop_Bits * @{*/ #define USART_StopBits_1                     ((uint16_t)0x0000)
#define USART_StopBits_0_5                   ((uint16_t)0x1000)
#define USART_StopBits_2                     ((uint16_t)0x2000)
#define USART_StopBits_1_5                   ((uint16_t)0x3000)
#define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \((STOPBITS) == USART_StopBits_0_5) || \((STOPBITS) == USART_StopBits_2) || \((STOPBITS) == USART_StopBits_1_5))
/*** @}*/ /** @defgroup USART_Parity * @{*/ #define USART_Parity_No                      ((uint16_t)0x0000)
#define USART_Parity_Even                    ((uint16_t)0x0400)
#define USART_Parity_Odd                     ((uint16_t)0x0600) 
#define IS_USART_PARITY(PARITY) (((PARITY) == USART_Parity_No) || \((PARITY) == USART_Parity_Even) || \((PARITY) == USART_Parity_Odd))
/*** @}*/ /** @defgroup USART_Mode * @{*/ #define USART_Mode_Rx                        ((uint16_t)0x0004)
#define USART_Mode_Tx                        ((uint16_t)0x0008)
#define IS_USART_MODE(MODE) ((((MODE) & (uint16_t)0xFFF3) == 0x00) && ((MODE) != (uint16_t)0x00))
/*** @}*/ /** @defgroup USART_Hardware_Flow_Control * @{*/ 
#define USART_HardwareFlowControl_None       ((uint16_t)0x0000)
#define USART_HardwareFlowControl_RTS        ((uint16_t)0x0100)
#define USART_HardwareFlowControl_CTS        ((uint16_t)0x0200)
#define USART_HardwareFlowControl_RTS_CTS    ((uint16_t)0x0300)
#define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\(((CONTROL) == USART_HardwareFlowControl_None) || \((CONTROL) == USART_HardwareFlowControl_RTS) || \((CONTROL) == USART_HardwareFlowControl_CTS) || \((CONTROL) == USART_HardwareFlowControl_RTS_CTS))
/*** @}*/ 

1.2同步时钟初始化结构体 

时钟用于同步通信,一般我们使用异步通信

同步时钟初始化结构体 

 

/** * @brief  USART Clock Init Structure definition  */ typedef struct
{uint16_t USART_Clock;   /*!< Specifies whether the USART clock is enabled or disabled.This parameter can be a value of @ref USART_Clock */uint16_t USART_CPOL;    /*!< Specifies the steady state value of the serial clock.This parameter can be a value of @ref USART_Clock_Polarity */uint16_t USART_CPHA;    /*!< Specifies the clock transition on which the bit capture is made.This parameter can be a value of @ref USART_Clock_Phase */uint16_t USART_LastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitteddata bit (MSB) has to be output on the SCLK pin in synchronous mode.This parameter can be a value of @ref USART_Last_Bit */
} USART_ClockInitTypeDef;

stm32f10x_usart.c->stm32f10x_usart.h ->找到对应的结构体定义和形参定义

1.3串口固件库函数

1.3.1编程时需要用到的固件库函数
1.串口初始化函数
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);

这个函数的功能是将我们写入串口的值写到相应的寄存器里 

2.中断配置函数
void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);
 3.串口使能函数
void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);

主要是控制UE这个大门的开关 

4.数据发送函数
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
5.数据接收函数
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
6.中断状态位获取函数
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);

 判断中断是否产生

1.3.2 stm32f10x_usart.h串口固件库函数的声明

void USART_DeInit(USART_TypeDef* USARTx);
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);
void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);
void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);
void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);
void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp);
void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength);
void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
void USART_SendBreak(USART_TypeDef* USARTx);
void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime);
void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler);
void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode);
void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
大致位置

2、串口发送和接收代码

2.1硬件设计

2.1.1TTL电平转USB电平

(使用时电脑上记得安装CH340驱动)

 在选择各个串口时,注意调帽

二、知识点和小技巧

1、CH340驱动所在位置

A盘(资料库)--4开发软件--USB转串口驱动-CH340-安装CH340SER.EXE

2、调帽

 在选择各个串口时,注意调帽

3、上位机配置要和程序代码保持一致

版权声明:

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

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