stm32cubeMX串口使用文档.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
. 一 建立 STM32cubeMX 工程 1.建立新工程,选择芯片 STM32F302CCTx 2. 在 Pinout 中时钟配置为高速外部时钟, UART 配置为异步通信, cube 会自动分配引脚。 3.Clock Configuration 中配置如下 . 4.configuration 中点击 USART1 可进入配置 在 USART1 configuration 中 Parameter Settings 可以配置波特率,发送数据字长,奇偶 校验位和停止位等。 NVIC Setting 可以配置中断优先级。 . 5.生成 keil 软件代码 点击工具栏中的齿轮按钮,可以选择代码的开发平台, ok 结束。(文件保存路径一定要是 全英文的) 进过了我们一系列的配置, cube 会为我们自动生成 keil 软件的代码,代码中包括工程所需 的固件库,配套的头文件,启动文件及用户文件。在 main.c 中包括了我们工程所需外设的 初始化,包括了系统时钟初始化,中断初始化, GPIO 初始化, USART1 初始化, HAL 库初 . 始化。我们只需要在 main.c 中添加我们自己的代码就可以了。 二 keil 软件代码及 HAL 库使用 UART_HandleTypeDef huart1 ;生成的代码中有声明一个 USART 处理的结构体 . HAL 库中串口的数据收发有四个函数 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); 指针 huart 指向我们之前定义的 USART 处理结构体, 我们将在函数中对结构体中的参数进 行操作。 pDate 是我们自己定义的数据发送接收缓存, Size 发送接收数据个数, Timeout 超时持续时间。 UART 状态的结构体: 我们在发送接收函数中要经常对 USART 的状态进行判断, 以便我们对函数结构体中的参数 进行操作, 发送函数一开始定义了一个 uint16_t *tmp 的指针。我们在这里判断发送接收的字长 ( 8byte 或 9byte ),当传送的数据是 9 位数据时, HAL_UART_Receive_IT 函数第二参数要求传参 . uint8_t  类型,到这里不够,于是强转  uint16_t  类型,将低  9 位数据保留移交给  tmp  ,同 时指针移动 2 个位数据位不需要  8 位,也就是 huart-pRxBuffPtr += 2 。这样,就能解释为何在下面的 tmp 中间变量了,直接将数据放入我们的数据缓存地址。  8 中断处理函数: 打开中断后会先调用这个中断处理函数(该函数在启动文件 stm32f3xx_it.c 中) 在 void HAL_UART_IRQHandler(UART_HandleTypeDef *huart) 函 数 中 会 使 用 __HAL_UART_GET_IT 和 __HAL_UART_GET_IT_SOURCE 先检查各个中断是否被占用和是 否失效,在调用中断之前还会进行错误的检查。  OverRun Error  、 Noise  、 Framing Error  、 Parity Error  等 . 调用 UART_Receive_IT(); 中断接收函数。 调用 UART_Transmit_IT(); 中断发送函数。 (注意 UART_Transmit_IT() 和 HAL_UART_Transmit_IT() 函数) HAL_UART_Transmit_IT 在主函数中调用 UART_Transmit_IT 在中断处理函数 IRQHandle ()中调用 HAL_StatusTypeDef  HAL_UART_Transmit_IT(UART_HandleTypeDef  *huart,  uint8_t *pData, uint16_t Size); HAL_StatusTypeDef  HAL_UART_Receive_IT(UART_HandleTypeDef  *huart,  uint8_t *pData, uint16_t Size); . 中断函数一开始会判断是否处于发送状态,如果不是返回 HAL_BUSY 。 数据处理与之前的 HAL_UART

文档评论(0)

150****2023 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档