【STM32CubeMX+HAL库】hmi串口屏显示波形

这篇具有很好参考价值的文章主要介绍了【STM32CubeMX+HAL库】hmi串口屏显示波形。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

usart hmi是淘晶驰开发的一款基于串口通信并采用指令集控制的可触摸屏幕,集成了多种控件,如按钮控件,滑块控件等,大大减轻了开发的难度。

【STM32CubeMX+HAL库】hmi串口屏显示波形

          曲线控件学习入口

下面我们来讲解一下cubeMX的配置以及输出正弦波代码的编写(三角波、方波同理)

一、CubeMX配置

1、设置时钟源(外部高速晶振)

【STM32CubeMX+HAL库】hmi串口屏显示波形

2、 配置烧录口

【STM32CubeMX+HAL库】hmi串口屏显示波形 

3、 串口配置

【STM32CubeMX+HAL库】hmi串口屏显示波形

这里我们选择使能串口1,可以看到设置完成后,系统会选择固定的引脚,当引脚被占用时,则无法使能串口1,因此st公司提供了多个串口通信通道(不同芯片数目不同)。

【STM32CubeMX+HAL库】hmi串口屏显示波形

usart.c文件中可查看串口的具体配置 

4、时钟树配置

【STM32CubeMX+HAL库】hmi串口屏显示波形

前期基本拉满即可,博主用的是stmF4ccu6,不同芯片主频不同。

4、文件配置

【STM32CubeMX+HAL库】hmi串口屏显示波形

注意IDE的选择,我们使用的是keil5。

注:文件路径名不可包含中文 

【STM32CubeMX+HAL库】hmi串口屏显示波形

 二、keil配置+算法

 1、根据所用烧录器进行具体的烧录接口配置

 我使用的是创芯工坊的一款dap-link,所以debugger选择CMSIS-DAP

【STM32CubeMX+HAL库】hmi串口屏显示波形 

 2、重要函数的配置与使用

1)重写printf函数,便于打印内容

魔术棒勾选“use MicroLIB”,否则printf函数无法正常使用

【STM32CubeMX+HAL库】hmi串口屏显示波形 

 接着重写fputc与fgetc函数

/* USER CODE BEGIN 4 */
int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}
int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
  return ch;
}
/* USER CODE END 4 */

2)代码部分

基本原理:单片机发送指令给串口屏,控制串口屏的显示

【STM32CubeMX+HAL库】hmi串口屏显示波形

串口屏曲线控件的控制需要用到这一指令,具体详见:http://wiki.tjc1688.com/doku.php?id=6.指令集:1.基本指令集#add

基于串口通信的特殊性,对于需要传输的整形数据,我们只能将其转化为字符串形势,否则指令无法被识别。

这里提供一个将整形变量转化为字符型的函数,大家直接使用即可

void itoa(int num,char str[] )
{
	int sign = num,i = 0,j = 0;
	char temp[11];
	if(sign<0)
	{
		num = -num;
	}
	do
	{
		temp[i] = num%10+'0';       
		num/=10;
		i++;
	}while(num>0);
	if(sign<0)
	{
		temp[i++] = '-';
	}
	temp[i] = '\0';
	i--;
	while(i>=0)
	{
	str[j] = temp[i];
	j++;
	i--;
	} 
	str[j] = '\0';
}

 接着我封装了一个传输数据的函数,仅供参考

void send_data(int a,int ch)
{
	char str[10];           //定义一个存放字符串的数组
	itoa(a,str);            //内嵌一个整形转字符的函数
	printf("add 1,%d,",ch);  
	printf("%s",str);        //字符串形势传输指令
	printf("\xff\xff\xff");  //结束符,告诉串口屏一次指令传输完毕
	HAL_Delay(10);           //必要的延时函数
}

定义变量,不要忘了声明上文介绍的函数

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
void send_data(int a,int ch);
void itoa(int num,char str[] );
int x,y;
float k;
/* USER CODE END PD */

主循环函数:

 while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		for(x=0;x<=999999;x++)
		{
			k=sin(0.05*x);
			y=40*k+100;
	    send_data(y,0);         //向串口屏曲线控件通道0发送数据
		}
		HAL_Delay(50);
  }

单片机烧录,运行,可以看到串口屏显示的正弦波形

【STM32CubeMX+HAL库】hmi串口屏显示波形

 (不要在意屏幕下方的数据,作者瞎写的T-T)

后续也可加入串口中断,按键中断等进行尝试,这里就不再赘述

如有错误,请即使评论指正。不懂的也可评论区留言。

That's all for today's sharing.Thanks for your perusal.文章来源地址https://www.toymoban.com/news/detail-411375.html

到了这里,关于【STM32CubeMX+HAL库】hmi串口屏显示波形的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32CubeMX实现USART串口通信

    硬件:stm32f103c8t6核心板 软件:STM32CubeMX 6.6.1 keil5 mdk 这里就不再详细介绍了,详细请参考上一篇博客: https://blog.csdn.net/qq_55894922/article/details/127232999?spm=1001.2014.3001.5501 若点击 Manage embedded software packages 后,出现失败,则需要随便点击其它任一选项,进行下载一些文件,比如点

    2023年04月17日
    浏览(57)
  • STM32CubeMx+MATLAB Simulink串口输出实验,UART/USART串口测试实验

    STM32CubeMx+MATLAB Simulink串口输出实验

    2024年02月21日
    浏览(45)
  • 【STM32+cubemx】0030 HAL库开发:DDS芯片AD9833实现简单的波形发生器

    大家好,我是学电子的小白白,今天带大家了解一款波形发生器芯片——AD9833。 AD9833是AD公司出品的一款DDS波形发生器,能够产生正弦波、三角波和方波输出。 通俗来讲,DDS是一种把波形预先存储在芯片内部的DAC,只要设置好它的工作频率,就能按这个频率来输出特定的波形

    2024年02月02日
    浏览(47)
  • 【STM32】HAL库 STM32CubeMX——DMA (串口DMA发送接收)

    软件: STM32CubeMX KEIL5 mcuisp 串口通信助手 硬件: STM32F103C8Tx 杜邦线,面包板,USB转TTL DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。 我们知道系统的运

    2024年02月12日
    浏览(66)
  • stm32cubemx hal学习记录:JY901S串口

    1、配置RCC、SYS、USART1、时钟84MHz 2、配置TIM6,10ms,允许中断,作为控制周期 3、配置USART3,允许中断,其他默认 1、移植入jy901s的c与h文件 2、串口读取数据代码 3、main中代码 4、定时器积分得到航向角 链接:https://pan.baidu.com/s/12AEUTWJnLenOnc-hvd91SQ?pwd=l1r3  提取码:l1r3

    2024年02月14日
    浏览(43)
  • STM32CubeMX-HAL库-UART串口接收中断回调函数代码分析

            CubeMx中HAL库函数的调用不同于库函数调用,在学习CubeMx串口通信时,不理解HAL库中的回调函数是怎么被调用的,于是查看每个的定义,参考其他人写的博客,总算弄明白了HAL库中断调用与库函数不同之处。写下这篇博客一是加深自己的理解,二是希望对不理解HA

    2024年02月02日
    浏览(56)
  • STM32多字节发送与接收(附淘晶驰串口屏教程)

    由于本人做题目时发现正点原子的串口发送教程是单字节,也在网上找了许多案例,但都不是很满意,这里借鉴了一下B站江科大UP主的代码,结合自己的需求,改了一下,大家可以参考一下,讲的很好,话不多说,直接上代码,希望帮助更多小伙伴。同时哪里不对的地方望大

    2024年02月15日
    浏览(59)
  • stm32(HAL)库编码器电机pid代码及利用VOFA+对Pid波形显示调参

    PID控制是一种经典的反馈控制算法,它通过不断地调整输出来使系统的实际值与设定值尽量接近,并保持在设定值附近。PID控制器由三个部分组成:比例§、积分(I)和微分(D)。 比例作用(P):比例作用通过测量实际值与设定值之间的偏差,乘以一个比例系数来产生输出。输出

    2024年02月13日
    浏览(62)
  • 【STM32】CUBEMX之串口:串口三种模式(轮询模式、中断模式、DMA模式)的配置与使用示例 + 串口重定向 + 使用HAL扩展函数实现不定长数据接收

    目录   总览 使用CUBEMX创建工程的基本配置 CUBEMX中的配置 Keil中的配置 实物连接 串口轮询模式 轮询模式HAL库函数 特点 实验一:发送数据给单片机并让其返回相同值 串口重定向 串口中断模式 在CUBEMX中打开串口中断 中断模式HAL库函数 特点 实验二:使用中断回调完成实验一

    2024年04月10日
    浏览(75)
  • STM32开发中printf利用重定向方法输出到串口(CubeMX 基于HAL库方法,带实际项目应用技巧 巧用goto语句)

    在stdio.h中的printf 原本输出到控制台, 在单片机应用中一般将其改到串口, 并利用串口输出信息来调试程序,非常方便。(本文以USART1为例) 此外CubeMX及CubeIDE 由于自动生成基础代码,因此每当更改硬件配置的时候, 都会被重置生成的基础代码。 这里使用goto语句来避免部分

    2024年02月04日
    浏览(84)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包