大彩串口屏官方程序移植 STM32F407

大彩串口屏官方程序移植

程序移植

  1. 打开项目文件夹的以下路径:keil5_STM32\STM32\DCDEMO7\src,把cmd_queue.c、hmi_driver.c,两个C文件复制到你的项目里;再打开:keil5_STM32\STM32\DCDEMO7\inc,把cmd_process.h、cmd_queue.h、hmi_driver.h,三个头文件复制到你的项目里
    在这里插入图片描述
    在这里插入图片描述
    cmd_queue.c文件其实就是个自己写的FIFO函数,包括清除缓存、取缓存数据。而hmi_driver.c文件里存放了所有跟串口屏数据交互的函数,例如画面切换、控件数值更新等等,全在这里面

  2. 修改cmd_queue.c,把19行这一句注释掉,这个ulitity.h没啥用,其对应的C文件里面重新定义了delay函数,你自己项目里有,没必要用他的,所以注释掉。
    在这里插入图片描述

  3. 修改hmi_driver.h,把这两个文件里面的串口头文件改成你自己的串口
    在这里插入图片描述

  4. 打开厂家例程里的hmi_user_uart.h,把这几行复制到你自己的串口头文件里(如usart3.h),这里面要注意,那句#include "stm32F10x_it.h"不要,宏定义全部都挪过去,最下面那个senchar函数,千万不要改函数名,下一步讲一下这个函数怎么修改。

在这里插入图片描述
5. 这个函数的作用是发送一个字节到串口屏。原函数是这样
在这里插入图片描述

用HAL库开发需要改成如下代码

void  SendChar(uint8_t t)
{
    USART6->DR=t;      //根据你设置的连接串口更改数值
		while((USART3->SR&0X40)==0);//等待发送结束 等待发送结束
}

进入所连串口的中断函数入口,我的是串口6

在这里插入图片描述

 if (__HAL_UART_GET_FLAG(&huart6_handler, UART_FLAG_RXNE) != RESET) /*!< 接收非空中断 */
    {
        uint8_t res = huart6_handler.Instance->DR;
				queue_push(res);
    }
  1. 再主函数里面清空缓存区和使能中断
    在这里插入图片描述
HAL_UART_Receive_IT(&huart6, (uint8_t *)cmd_buffer, CMD_MAX_SIZE);
  1. 在main.c文件中,添加如下引用
#include "hmi_driver.h"
#include "cmd_queue.h"
#include "cmd_process.h"

在这里插入图片描述
8. 到这之后我们新建一个文件对,我用Screen命名,然后添加好.c文件与.h路径,如图,并贴出.h代码
在这里插入图片描述

#ifndef _SCREEN_H_
#define _SCREEN_H_
 
#include "main.h"
#include "stdio.h"
 
//串口屏部分
#include "hmi_driver.h"
#include "cmd_queue.h"
#include "cmd_process.h"
 
//函数声明区
void ProcessMessage( PCTRL_MSG msg, uint16 size );		//消息处理流程
 
#endif

再打开官方例程,打开它的 main.c 文件,复制图示代码,粘贴到刚刚新建的 Screen.c 文件,注意添加 Screen.h 引用:

在这里插入图片描述
在这里插入图片描述
到此代码算移植成功

读取控件数值

官方例程

/*! 
*  \brief  文本控件通知
*  \details  当文本通过键盘更新(或调用GetControlValue)时,执行此函数
*  \details  文本控件的内容以字符串形式下发到MCU,如果文本控件内容是浮点值,
*  \details  则需要在此函数中将下发字符串重新转回浮点值。
*  \param screen_id 画面ID
*  \param control_id 控件ID
*  \param str 文本控件内容
void NotifyText(uint16 screen_id, uint16 control_id, uint8 *str)
{
    if(screen_id==3)
    {
      int32 value=0;
      sscanf(str,"%ld",&value);  
      if(control_id==6)
      {
        printf("%ld", value);
      }
    }
}    

在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值