野火stm32h743xih6 touchgfx 添加触摸代码(二)

文章介绍了如何在Touchgfx项目中添加触摸功能,涉及步骤包括新建触摸驱动文件夹,复制野火源代码中的触摸驱动,修改bsp_i2c_touch.c、bsp_i2c_touch.h、bsp_touch_gt9xx.c、bsp_touch_gt9xx.h和STM32TouchController.cpp等文件的内容,如I2C配置、延迟函数、中断处理函数等,并在ApplicationTemplate中添加触摸交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里主要介绍一下在touchgfx添加触摸代码的过程
引用文章
参考代码下面的demo文件
这里提供了触摸需要的代码

更改代码,添加触摸驱动
新建Driver\Touch_Driver文件夹,从野火源代码《29-电容触摸屏–触摸画板》里面复制touch触摸驱动文件到Driver\Touch_Driver文件夹中。
在这里插入图片描述
添加上述文件到工程中
在这里插入图片描述

bsp_i2c_touch.c文件需要修改内容:

  1.引用头文件修改如下:

在这里插入图片描述

 2. **I2C_ResetChip(void)**函数里面修改如下:
 主要修改**Delay()**函数值为0x9FFFF  

在这里插入图片描述

bsp_i2c_touch.h文件需要修改内容:

1.确保使用软件IIC

在这里插入图片描述

bsp_touch_gt9xx.c文件需要修改内容:

1. 引用头文件修改如下:

在这里插入图片描述

2. 添加LCD_TypeDef cur_lcd = INCH_5;

在这里插入图片描述

3. 修改GTP_Touch_Down()函数内容

在这里插入图片描述

4.修改GTP_Touch_Up()函数内容

在这里插入图片描述

5.修改GTP_Init_Panel(void)函数 如下:

在这里插入图片描述

6.将 #if UPDATE_CONFIG 下面的内容修改如下:

在这里插入图片描述

7.修改GTP_IRQHandler(void)函数如下:

在这里插入图片描述

bsp_touch_gt9xx.h文件需要修改内容:

1.开头如下:

在这里插入图片描述
2.结尾如下:
在这里插入图片描述

 3.添加分辨率:

在这里插入图片描述
4.添加LCD液晶类型
在这里插入图片描述

STM32TouchController.cpp文件需要修改内容:

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

至此,即可完成触摸。在ApplicationTemplate,touchgfx.part中添加触摸交互动作即可。
在这里插入图片描述

### STM32H743XIH6 UART配置和使用教程 #### 配置UART引脚 对于STM32H743XIH6微控制器,在设置USART1作为日志输出端口时,默认情况下其TX和RX引脚可能并非PA9和PA10。因此,需要手动指定这些引脚以便正确初始化外设通信功能[^1]。 ```c // 定义GPIO结构体并初始化USART1的Tx/Rx引脚为PA9/PA10 MX_GPIO_Init(); static void MX_USART1_UART_Init(void) { huart1.Instance = USART1; huart1.Init.BaudRate = 115200; // 设置波特率 huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } } ``` #### 初始化函数调用 上述代码片段展示了如何通过修改`MX_USART1_UART_Init()`函数中的参数来适配特定硬件平台的需求。这里选择了常见的115200bps波特率,并启用了全双工模式下的发送接收能力。 #### 使用FreeRTOS管理任务 当构建基于FreeRTOS的操作系统环境时,可以创建专门的任务用于处理串行数据收发操作: ```c void StartDefaultTask(void const * argument) { /* Infinite loop */ for(;;) { char log_message[] = "System is running.\r\n"; HAL_UART_Transmit(&huart1, (uint8_t*)log_message, strlen(log_message), HAL_MAX_DELAY); osDelay(1000); // 延迟一秒再重复执行下一次循环 } } int main(void) { ... osThreadDef(default_task, StartDefaultTask, osPriorityNormal, 0, configMINIMAL_STACK_SIZE); task_handle = osThreadCreate(osThread(default_task), NULL); ... } ``` 这段程序定义了一个简单的后台线程,它每隔一秒钟向连接到USART1的日志接口发送一条消息字符串表示当前状态正常运行中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值