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

做营销网站建设价格网站的月度流量统计报告怎么做

做营销网站建设价格,网站的月度流量统计报告怎么做,搜狗推广登录平台官网,网站开发学什么数据库知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 开发流程 串口功能配置 串口功能开启 串口中断配置 串口参数配置 查询配置结果 发送功能测试 中断接收功能测试 printf配置 DMA收发 配置 DMA发送 DMA接收(方式1) DMA接收(方式2) 总结 前言…

知不足而奋进 望远山而前行


目录

文章目录

前言

学习目标

学习内容

开发流程

串口功能配置

串口功能开启

串口中断配置

串口参数配置

查询配置结果

发送功能测试

中断接收功能测试

printf配置

DMA收发

配置

DMA发送

DMA接收(方式1)

DMA接收(方式2)

总结


前言

在嵌入式系统开发中,掌握串口通信是至关重要的一环。串口通信作为微控制器与外部设备或其他微控制器之间的主要通信方式,在各种嵌入式应用中起着重要作用。本文将介绍如何通过STM32CubeMX配置串口功能,并掌握串口发送、接收以及使用DMA进行数据传输的方法。同时,我们还将讨论如何配置printf函数,使其能够在串口上输出调试信息,以及如何处理串口接收中断。通过学习这些内容,读者将能够在嵌入式系统开发中更加灵活地应用串口通信功能。


学习目标

  • 熟悉STM32CubeMX配置流程
  • 掌握串口发送和接收
  • 掌握串口DMA发送和DMA接收
  • 掌握printf配置

学习内容

开发流程

  1. 配置芯片串口功能
  2. 编写串口代码
  3. 调试

串口功能配置

串口功能开启

  • Connectivity下选择合适的串口,这里选择USART1
  • 配置模式为异步,Asynchronous
串口中断配置

  • NVIC Settings下,打开串口中断。
串口参数配置

  • Parameter Settings中,根据情况配置串口的参数。
查询配置结果

GPIO Setting中可以显示默认的IO引脚

右侧芯片引脚部分会显示配置的结果。

发送功能测试

/* USER CODE BEGIN WHILE */
uint8_t cnt = 0;
while (1)
{HAL_UART_Transmit(&huart1, &cnt, 1, HAL_MAX_DELAY);cnt++;HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */
}

通过HAL_UART_Transmit函数发送数据。

中断接收功能测试

/* USER CODE BEGIN WHILE */
HAL_UART_Receive_IT(&huart1, usart1_buffer, USART1_BUFFER_LEN);
while (1)
{/* USER CODE END WHILE *//* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
/* USER CODE BEGIN 0 */
#define USART1_BUFFER_LEN 1
uint8_t usart1_buffer[USART1_BUFFER_LEN];void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {HAL_UART_Transmit(&huart1, (const uint8_t *)usart1_buffer, USART1_BUFFER_LEN, HAL_MAX_DELAY);// 开启中断接收HAL_UART_Receive_IT(&huart1, usart1_buffer, USART1_BUFFER_LEN);
}
/* USER CODE END 0 */

接收任意个字节

触发空闲中断接收

HAL_UARTEx_ReceiveToIdle_IT(&huart1, usart_buffer, RX_BUF_LEN); // 常用

使用Idle空闲中断回调

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){usart_buffer[Size] = '\0';printf("callback2: %s\n", usart_buffer);HAL_UARTEx_ReceiveToIdle_IT(&huart1, usart_buffer, RX_BUF_LEN); // 常用
}

printf配置

#include <stdio.h>
int fputc(int ch, FILE* f) {HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1, 0xFFFF);return ch;
}

注意:如果加了printf无法打印日志,记得在 options 里勾选 MicroLIB

DMA收发

配置

DMA发送
/* USER CODE BEGIN WHILE */
uint8_t cnt = 0;
while (1)
{HAL_UART_Transmit_DMA(&huart1, &cnt, 1);cnt++;HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */
}
DMA接收(方式1)
  • 触发接收
HAL_UART_Receive_DMA(&huart1, usart_buffer, RX_BUF_LEN); //  常用!
  • 接收回调函数
#define RX_BUF_LEN    12
uint8_t usart_buffer[RX_BUF_LEN + 1];void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){// 为了打印字符串usart_buffer[RX_BUF_LEN] = '\0';printf("callback1: %s\n", usart_buffer);// 再次启用中断接收(收到指定个字节才执行)HAL_UART_Receive_DMA(&huart1, usart_buffer, RX_BUF_LEN);  // 常用!}
DMA接收(方式2)

通过空闲中断事件接收,即发生空闲了才进行数据处理

  • 触发接收
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, usart_buffer, RX_BUF_LEN); // 常用!!!
  • 接收回调函数
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){// 为了打印字符串usart_buffer[Size] = '\0';printf("callback2[%d]: %s\n", Size, usart_buffer);// 再次启用接收(RX_BUF_LEN为最大接收数量)HAL_UARTEx_ReceiveToIdle_DMA(&huart1, usart_buffer, RX_BUF_LEN);  // 常用!}

总结

通过本文的学习内容,读者可以熟悉STM32CubeMX的串口配置流程,掌握串口发送和接收的基本方法,并了解如何使用DMA进行串口数据传输。在串口发送功能测试中,通过HAL_UART_Transmit函数实现了简单的数据发送;在中断接收功能测试中,通过HAL_UART_Receive_IT函数实现了中断接收,并介绍了触发空闲中断接收的方法。此外,还讨论了如何配置printf函数,使其能够在串口上输出调试信息。最后,通过DMA收发部分的介绍,读者可以了解如何配置DMA进行高效的串口数据传输,包括DMA发送和DMA接收的两种方式。通过这些学习内容,读者将能够在嵌入式系统开发中灵活运用串口通信功能,为实际应用开发提供技术支持。


文章转载自:

http://1UhxKVbr.gczzm.cn
http://SSOHzc9g.gczzm.cn
http://jTS63Usv.gczzm.cn
http://C5owMOKZ.gczzm.cn
http://AcO2bZO8.gczzm.cn
http://Y1fkaVUV.gczzm.cn
http://VfgQuYxm.gczzm.cn
http://NDHWYlPo.gczzm.cn
http://5d7v6gn9.gczzm.cn
http://utpzFL7t.gczzm.cn
http://lzy34X5q.gczzm.cn
http://5dyEpQSt.gczzm.cn
http://EgHTwDVX.gczzm.cn
http://Wk5KatqV.gczzm.cn
http://wdaMYLv1.gczzm.cn
http://Ousx1KYV.gczzm.cn
http://quKaBwVL.gczzm.cn
http://NTbIHfwl.gczzm.cn
http://5T9HJaCb.gczzm.cn
http://RjeWNWzL.gczzm.cn
http://1kEJAWCx.gczzm.cn
http://MhUzjyOj.gczzm.cn
http://vN5hUty4.gczzm.cn
http://Fpu2Y6LD.gczzm.cn
http://8EyTD6Wc.gczzm.cn
http://ILeZVJRy.gczzm.cn
http://82PhaV4J.gczzm.cn
http://icEC8S1y.gczzm.cn
http://sO31uZxw.gczzm.cn
http://jyPkhoFq.gczzm.cn
http://www.dtcms.com/wzjs/766306.html

相关文章:

  • 做国际网站怎么做国外搜索引擎
  • 做网站有啥软件在线视频下载网站如何做
  • 西安企业门户网站建设怎么制作游戏修改器
  • 青海建设局网站大兴58网站起名网站制作
  • 湖北建站哪个网站可以学做包子
  • 选择一个域名进行网站建设网络整合营销的含义
  • 零基础学做衣服的网站咨询公司简介
  • app推荐网站做网站不备案
  • 奉化网站建设网站点击推广
  • 潍坊品牌网站建设公司建协网官方网站
  • 做衬衫的网站怎么把平台推广出去
  • 新开网站做内贸业务员好做杭州建设工程信用平台
  • 男女做那个那个的视频网站创建公众号的步骤
  • 网站制作公司在哪里找国外营销型网站设计
  • aspcms网站栏目调用公司做网站多少钱
  • 养殖网站模版中时讯通信建设有限公司网站
  • 网站建设合同是否属于技术服务合同wap和网页的区别
  • 网站建设观点一卡2卡三卡4卡入口天堂
  • 有凡客模版怎么建设网站视频号下载软件免费
  • 免费微网站与公众号平台对接汽车网站和移动端建设方案
  • 高端网站开发设计北京icp网站备案
  • 广州皮具网站建设wordpress 模特模板
  • 中山市城乡和住房建设局网站网络营销咨询机构
  • 猪八戒网站找做微信小程序的公司logo设计logo
  • 台州网站开发外贸系统软件有哪些
  • qq在线网站代码生成网站建设人员岗位设置
  • 手机网站模板 织梦网站开发嫌工时长
  • 青岛旅游网站建设岳阳优化营商环境
  • 原创网站设计手机优化游戏性能的软件
  • wordpress适合大型网站吗浙江建设三类人员报名网站