- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.
一 建立STM32cubeMX工程
1.建立新工程,选择芯片 STM32F302CCT
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。这样,就能解释为何在下面的8
位数据位不需要 tmp 中间变量了,直接将数据放入我们的数据缓存地址。
中断处理函数:
打开中断后会先调用这个中断处理函数(该函数在启动文件 stm32f3xx_it.c 中)
在 void HAL_UART_IRQHandler(UART_HandleTypeDef *huart) 函 数 中 会 使 用
__HAL_UART_GET_IT 和__HAL_UART_GET_IT_SOURCE 先检查各个中断是否被占用和是
否失效,在调用中
文档评论(0)