当前位置: 首页 > news >正文

wordpress 建站网站排名查询alexa

wordpress 建站,网站排名查询alexa,wordpress 分销,网站备案要关多久STM32-29正点原子版本串口发送传输实验 通过串口接收或发送一个字符 例程目的 开发板上我们接入的是实现异步通信的UART接口 USB转串口原理图 我们一步步分析 PA9是串口1 的发送引脚 PA10是串口1 的接受引脚 。因为我们现在只是用到异步收发器功能,所以我们现…

STM32-29正点原子版本串口发送传输实验

通过串口接收或发送一个字符
例程目的

开发板上我们接入的是实现异步通信的UART接口
在这里插入图片描述
USB转串口原理图
我们一步步分析
在这里插入图片描述
在这里插入图片描述
PA9是串口1 的发送引脚
PA10是串口1 的接受引脚
在这里插入图片描述
在这里插入图片描述
。因为我们现在只是用到异步收发器功能,所以我们现在只需要 stm32fxx_hal_uart.c 文件(及其头文件)的驱动代码,stm32f1xx_hal_usart.c 是通用同步异步收发器,暂时没有用到,可以暂时不看。用到一个外设第一个函数就应该是其初始化函数。
在这里插入图片描述
首先我们需要做的第一步是
无论干什么事情 第一步就是先把用到的东西初始化了

HAL_UART_Init 函数

要使用一个外设首先要对它进行初始化,所以先看串口的初始化函数,其声明如下:HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);
这是范式例中给出的指示
我们现在直接先看正点原子讲述的介绍
它先设定了
UART_HandleTypeDef g_uartl_handle
意思就是 我们上来UART这个句柄结构体的类型下的一个名字叫g_uartl_handle
就像是int a 懂?
这里的UART_HandleTypeDef 来自于我们一开始设定的HAL_UART_Init(UART_HandleTypeDef *huart);

这只是初步的设计和占用
然后接下来我们是第一个涉及到的
用了定义新的类型
在这里插入图片描述
这是对于串口1进行初始化 我们这时候脑子迅速过一下想不对啊 这和我们上面的这个不对啊
先暂时放下这个问题
然后我们先看内部的继续
第一个是
g_uart1_handle.Instance = USART1 ;
在这里插入图片描述
我们更加抓住的重点是结构体中的两项 Instance 和 Init

(在这里我必须吐槽一声 你写东西能不能按照规矩去写 ,说的就是你 能不能写成 USART_TypeDef* Instance 就像是 int* a 整个指针类型代表了a的地址 )
而这个Init 所指代的InitTypeDef 又是一整个结构体 所以我们在上面使用的时候会有Init.BaudRate 这种用法
在这里插入图片描述
所以我们写下来
就是第一个Instance 代表的是寄存器基地址 我们写入都是USART1 其实我们在这之前就偷偷的写好了USART1 对于 整个寄存器的define 对于HAL库的所有便捷使用其实在暗中早就define 好了寄存器的位置
接下来按照要求想法写好
1)BaudRate:波特率设置。一般设置为 2400、9600、19200、115200。
2)WordLength:数据帧字长,可选 8 位或 9 位。这里我们设置为 8 位字长数据格式。
3)StopBits:停止位设置,可选 0.5 个、1 个、1.5 个和 2 个停止位,一般我们选择 1 个停止位。
4)Parity:奇偶校验控制选择,我们设定为无奇偶校验位。
5)Mode:UART 模式选择,可以设置为只收模式,只发模式,或者收发模式。这里我们设置为全双工收发模式。
6)HwFlowCtl:硬件流控制选择,我们设置为无硬件流控制。
7)OverSampling:过采样选择,选择 8 倍过采样或者 16 过采样,一般选择 16 过采样。
然后下面是
HAL_UART_Init(&g_uart1_handle)
就是把上面的那个结构体 取地址放进来 因为是(类似int* ) 类型的摆明了就是一个地址

这就相当于把HAL全部初始化完了
我们在前面的示例中只给出了一个句柄有什么嘛,这个句柄的g_什么什么的,还是我们自己define 的 ,我们首先总命名叫usart_init 然后先define 一个句柄类型的名字 ,我们把句柄下,需要自己设置的初始化的内容填上去。 接下来在最后我们浅浅的写上HAL_UART_Init 这东西到底初始化什么,那你别管了,那是HAL库的事情了 ,我们所传递给他一个蕴含句柄信息的地址就可以了。有些人会在这里问,既然你说HAL库都定义好了,为什么我不直接写这句话,我想说 ,那你傻啊,他怎么知道你要初始化什么串口,初始化成什么状态嘛。
照这么写就好了
在这里插入图片描述
接下来第二步
串口MSP回调函数
我们现在好奇为什么会这样,不是已经初始化过了嘛,你怎么又在搞这种初始化,但是此言差矣,因为我们上面的初始化的是我们的UART串口,我们回调函数的意义有没有忘记,但是每经历一次串口的初始化,我们都会调用一次MspInit 那么我们必须明白我们串口的顺序?何时调用 ,其实这部分很明显可以写进上一个UART的初始化。但是为了层次化的带吗叙述我们分开写,并且可以在此处顺便配置完GPIO的设计。
HAL_UART_MspInit (传入的还是我们上面所提供的整个新定义句柄结构的基地址)
void HAL_UART_MspInit(地址)
因为串口初始化完成之后,我们内部会自行调用
在这里插入图片描述
因为要配置GPIO了所以先确定一个
GPIO_InitTypeDef类型下的gpio_init_struct
然后判断完所使用的确实是串口1 我们开始接下来的使用
1.使能USART1和对应IO时钟
2.初始化IO
3.使能USART1中断,设置优先级
在这里插入图片描述
我们到这里做一个小型的总结 先第一步 初始化想要用的串口,配置了一大堆。
第二步到这里 ,反正串口初始化会自动调用这个Mspinit 我们把串口选择 选择完之后并且PA9 PA10 一并的GPIO设置一下 (其实我觉得私下里可以分开,但是算了写在一起也行吧)
下面叙述的是GPIO串口的配置
PA9 PA10 推挽复用 上拉 高速
在这里插入图片描述
其实这里的写法是和之前的是一模一样的,我们观察之前GPIO的显示就能看出来了
(其实所有的初始化都是一样,无论是串口还是GPIO 都是先设定所需要的内容,然后使用HAL库最惯用的初始化操作)
在这里插入图片描述
P9 P10 一个连接的输入一个是输出 毕竟是不同的嘛
在这里插入图片描述

3.接下来是开启串口异步接收中断

因为我们的任务是通过串口接收或发送一个字符。就是因为我们整个任务会用到中断,来一个信息,我难道不应该打断我目前的所作所为,然后处理事件嘛,所以说这个中断使能,和设置是必须的。最后因为我们用到串口中断,所以还需要中断相关的配置。HAL_NVIC_EnableIRQ 函数使
能串口 1 复用通道。HAL_NVIC_SetPriority 函数配置串口中断的抢占优先级以及响应优先级。
串口初始化由上述两个函数完成。
在这里插入图片描述
HAL_Init() 函数设置的分组为2,抢占优先级和响应优先级都在0~3之间 各位都是2位所以是0到3 嘿嘿

4.配置一下串口异步接收中断

在这里插入图片描述
函数描述:用于开启以中断的方式接收指定字节。数据接收在中断处理函数里面实现。⚫ 函数形参:形参 1 是 UART_HandleTypeDef 结构体指针类型的串口句柄。形参 2 是要接收的数据地址。形参 3 是要接收的数据大小,以字节为单位。
HAL_UART_Receive_IT()
在这里插入图片描述

5.第五个步骤

编写中断服务函数
使用的是HAL_UART_IRQHandler 函数是 HAL 库中断处理公共函数
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
形参 1 是 UART_HandleTypeDef 结构体指针类型的串口句柄。

我们来看带一般会调用HAL库内部的中断共用处理函数
HAL_UART_IRQHandler
调用了这个函数之后会清除中断标志位并开始调用callback函数
所以我们在这个部分之后重新添加一个使能中断的函数
在这里插入图片描述

6.接下来我们所需要做的是串口数据接收完成回调函数

重新定义一下callback函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
其实最开始先确定一下该函数整个操作用到的是串口几确认正确无误再开始后续的实现
按照实现方法需要定义两个一个是串口接收数据缓冲区 一个是数据标志

http://www.hkea.cn/news/977279/

相关文章:

  • 城乡建设网站首页百度seo收录软件
  • 永久免费建个人网站培训网站建设
  • 如何使用jq做弹幕网站好用的磁力搜索引擎
  • 南充营销型网站建设高端品牌网站建设
  • 制作小程序和网站的公司搜狗收录提交入口网址
  • 手机站电影基础建站如何提升和优化
  • 江苏 网站备案百度贴吧官网app下载
  • 网站制作三站湖南网站seo公司
  • 简单做任务赚钱网站企业管理培训课程报名
  • 零点研究咨询集团官方网站建设相似图片在线查找
  • 网站开发需要什么软件关键词app
  • 360全景网站建设做了5天游戏推广被抓了
  • 政府网站建设经验典型材料河源今日头条新闻最新
  • 为什么要进行网站备案佛山市人民政府门户网站
  • 摄影网站开发背景百度app交易平台
  • 吉林网站建设石家庄百度快照优化排名
  • 大学生网站开发总结报告app推广接单发布平台
  • 自己做的网站怎么推广seo顾问培训
  • 怎么做业务网站百度搜索提交入口
  • 网页设计网站图片西安百度推广运营公司
  • 济南网站开发推广网络服务包括
  • 五星级酒店网站建设关键词歌词表达的意思
  • 浙江高端建设网站网站关键词如何优化
  • 2017网站开发工程师五合一网站建设
  • 学编程的孩子有什么好处seo网站诊断文档案例
  • 广州中新知识城开发建设网站无锡百姓网推广
  • 宝鸡做网站费用关键词你们懂的
  • wordpress 仿站 教程百度竞价点击一次多少钱
  • 做h的游戏 迅雷下载网站百度推广管家
  • 营销型网站建设的目的外贸网站平台都有哪些 免费的