first software regen
This commit is contained in:
74
Software/TouchGFX/App/app_touchgfx.c
Normal file
74
Software/TouchGFX/App/app_touchgfx.c
Normal file
@ -0,0 +1,74 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : app_touchgfx.c
|
||||
******************************************************************************
|
||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
||||
* generated once! Delete this file from your project and re-generate code
|
||||
* using STM32CubeMX or change this file manually to update it.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "app_touchgfx.h"
|
||||
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
|
||||
/* USER CODE BEGIN PD */
|
||||
|
||||
/* USER CODE END PD */
|
||||
|
||||
/* Private macro -------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PM */
|
||||
|
||||
/* USER CODE END PM */
|
||||
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
|
||||
/* USER CODE BEGIN PV */
|
||||
|
||||
/* USER CODE END PV */
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
void touchgfx_init(void);
|
||||
void touchgfx_components_init(void);
|
||||
void touchgfx_taskEntry(void);
|
||||
|
||||
/* USER CODE BEGIN PFP */
|
||||
|
||||
/* USER CODE END PFP */
|
||||
|
||||
/**
|
||||
* Initialize TouchGFX application
|
||||
*/
|
||||
void MX_TouchGFX_Init(void)
|
||||
{
|
||||
// Calling forward to touchgfx_init in C++ domain
|
||||
touchgfx_components_init();
|
||||
touchgfx_init();
|
||||
}
|
||||
|
||||
/**
|
||||
* TouchGFX application entry function
|
||||
*/
|
||||
void MX_TouchGFX_Process(void)
|
||||
{
|
||||
// Calling forward to touchgfx_taskEntry in C++ domain
|
||||
touchgfx_taskEntry();
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
58
Software/TouchGFX/App/app_touchgfx.h
Normal file
58
Software/TouchGFX/App/app_touchgfx.h
Normal file
@ -0,0 +1,58 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : app_touchgfx.h
|
||||
******************************************************************************
|
||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
||||
* generated once! Delete this file from your project and re-generate code
|
||||
* using STM32CubeMX or change this file manually to update it.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef APP_TOUCHGFX_H
|
||||
#define APP_TOUCHGFX_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN ET */
|
||||
|
||||
/* USER CODE END ET */
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EC */
|
||||
|
||||
/* USER CODE END EC */
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EM */
|
||||
|
||||
/* USER CODE END EM */
|
||||
|
||||
/* Exported functions prototypes ---------------------------------------------*/
|
||||
void MX_TouchGFX_Init(void);
|
||||
void MX_TouchGFX_Process(void);
|
||||
|
||||
/* USER CODE BEGIN EFP */
|
||||
|
||||
/* USER CODE END EFP */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* APP_TOUCHGFX_H */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
30
Software/TouchGFX/ApplicationTemplate.touchgfx.part
Normal file
30
Software/TouchGFX/ApplicationTemplate.touchgfx.part
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
{
|
||||
"Application": {
|
||||
"Name": "FT23_Charger",
|
||||
"TouchGfxPath": "../Middlewares/ST/touchgfx",
|
||||
"AvailableColorDepths": [ 24 ],
|
||||
"AvailableLCDs":
|
||||
{
|
||||
"24": "LCD24bpp"
|
||||
},
|
||||
"AvailableResolutions": [
|
||||
{
|
||||
"Width": 1024,
|
||||
"Height": 600
|
||||
}
|
||||
],
|
||||
"PostGenerateTargetCommand": "touchgfx update_project",
|
||||
"Family": "STM32H7",
|
||||
"SubFamily": "STM32H7A3/7B3",
|
||||
"Platform": "m7",
|
||||
"Toolchain": "STM32CubeIDE",
|
||||
"ProjectFile": "../FT23_Charger.ioc",
|
||||
"OptionalComponentsRoot": "../Middlewares/ST/touchgfx_components",
|
||||
"OptionalComponents": [
|
||||
],
|
||||
"AdditionalFeatures": [
|
||||
],
|
||||
},
|
||||
"Version": "4.21.0"
|
||||
}
|
||||
92
Software/TouchGFX/FT23_Charger.touchgfx
Normal file
92
Software/TouchGFX/FT23_Charger.touchgfx
Normal file
@ -0,0 +1,92 @@
|
||||
{
|
||||
"Application": {
|
||||
"Screens": [
|
||||
{
|
||||
"Name": "screen",
|
||||
"Components": [
|
||||
{
|
||||
"Type": "Button",
|
||||
"Name": "button1",
|
||||
"X": 327,
|
||||
"Y": 275,
|
||||
"Width": 370,
|
||||
"Height": 50,
|
||||
"Pressed": "__generated\\alternate_theme_images_widgets_button_regular_height_50_large_round_pressed.png",
|
||||
"Released": "__generated\\alternate_theme_images_widgets_button_regular_height_50_large_round_action.png",
|
||||
"Preset": "alternate_theme\\presets\\button\\regular\\height_50\\large_round_action.json"
|
||||
}
|
||||
],
|
||||
"Interactions": [
|
||||
{
|
||||
"InteractionName": "Interaction1",
|
||||
"Trigger": {
|
||||
"Type": "TriggerClicked",
|
||||
"TriggerComponent": "button1"
|
||||
},
|
||||
"Action": {
|
||||
"Type": "ActionNone"
|
||||
}
|
||||
}
|
||||
],
|
||||
"CustomActions": [
|
||||
{
|
||||
"Name": "action1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"CustomContainerDefinitions": [],
|
||||
"Name": "MyApplication",
|
||||
"Resolution": {
|
||||
"Width": 1024,
|
||||
"Height": 600
|
||||
},
|
||||
"SelectedColorDepth": 24,
|
||||
"StartupScreenName": "screen",
|
||||
"SelectedStartupLanguage": "GB",
|
||||
"TouchGfxPath": "../Middlewares/ST/touchgfx",
|
||||
"UIPath": ".",
|
||||
"AvailableColorDepths": [
|
||||
24
|
||||
],
|
||||
"AvailableLCDs": {
|
||||
"24": "LCD24bpp"
|
||||
},
|
||||
"AvailableSections": [
|
||||
"ExtFlashSection",
|
||||
"IntFlashSection"
|
||||
],
|
||||
"AvailableResolutions": [
|
||||
{
|
||||
"Width": 1024,
|
||||
"Height": 600
|
||||
}
|
||||
],
|
||||
"PhysicalButtons": [],
|
||||
"FrameworkFeatures": {
|
||||
"LCD24bpp": {
|
||||
"Id": "LCD24bpp",
|
||||
"IsEnabled": true
|
||||
}
|
||||
},
|
||||
"GenerateAssetsCommand": "make -f simulator/gcc/Makefile assets -j8",
|
||||
"PostGenerateCommand": "touchgfx update_project --project-file=simulator/msvs/Application.vcxproj",
|
||||
"PostGenerateTargetCommand": "touchgfx update_project",
|
||||
"CompileSimulatorCommand": "make -f simulator/gcc/Makefile -j8",
|
||||
"RunSimulatorCommand": "build\\bin\\simulator.exe",
|
||||
"LandscapeSkinX": 0,
|
||||
"LandscapeSkinY": 0,
|
||||
"PortraitSkinX": 0,
|
||||
"PortraitSkinY": 0,
|
||||
"DisplayOrientation": "Landscape",
|
||||
"Family": "STM32H7",
|
||||
"SubFamily": "STM32H7A3/7B3",
|
||||
"Toolchain": "STM32CubeIDE",
|
||||
"Platform": "m7",
|
||||
"ProjectFile": "../FT23_Charger.ioc",
|
||||
"OptionalComponentsRoot": "../Middlewares/ST/touchgfx_components",
|
||||
"OptionalComponents": [],
|
||||
"AdditionalFeatures": []
|
||||
},
|
||||
"Version": "4.24.2"
|
||||
}
|
||||
22
Software/TouchGFX/application.config
Normal file
22
Software/TouchGFX/application.config
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"image_configuration": {
|
||||
"dither_algorithm": "2",
|
||||
"alpha_dither": "yes",
|
||||
"layout_rotation": "0",
|
||||
"opaque_image_format": "RGB888",
|
||||
"nonopaque_image_format": "ARGB8888",
|
||||
"l8_compression": "no",
|
||||
"rgb_compression": "no",
|
||||
"section": "ExtFlashSection",
|
||||
"extra_section": "ExtFlashSection",
|
||||
"images": {}
|
||||
},
|
||||
"text_configuration": {
|
||||
"remap": "yes",
|
||||
"a4": "yes",
|
||||
"binary_translations": "no",
|
||||
"binary_fonts": "no",
|
||||
"framebuffer_bpp": "24",
|
||||
"font_format": "0"
|
||||
}
|
||||
}
|
||||
BIN
Software/TouchGFX/assets/fonts/verdana.ttf
Normal file
BIN
Software/TouchGFX/assets/fonts/verdana.ttf
Normal file
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
160
Software/TouchGFX/assets/texts/texts.xsd
Normal file
160
Software/TouchGFX/assets/texts/texts.xsd
Normal file
@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<!--Types-->
|
||||
<xs:simpleType name="direction" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="LTR" />
|
||||
<xs:enumeration value="RTL" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="alignment" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Left" />
|
||||
<xs:enumeration value="LEFT" />
|
||||
<xs:enumeration value="left" />
|
||||
<xs:enumeration value="Center" />
|
||||
<xs:enumeration value="CENTER" />
|
||||
<xs:enumeration value="center" />
|
||||
<xs:enumeration value="Right" />
|
||||
<xs:enumeration value="RIGHT" />
|
||||
<xs:enumeration value="right" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="bpp" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="1" />
|
||||
<xs:enumeration value="2" />
|
||||
<xs:enumeration value="4" />
|
||||
<xs:enumeration value="8" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="fallbackCharacter" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="|.|skip|(0[xX][0-9a-fA-F]{1,4})" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ellipsisCharacter" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="|.|(0[xX][0-9a-fA-F]{1,4})" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="wildcardCharacterRanges" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="|(.-.|(0[xX][0-9a-fA-F]{1,4}|[0-9]{1,5})(-(0[xX][0-9a-fA-F]{1,4}|[0-9]{1,5}))?)(,(.-.|(0[xX][0-9a-fA-F]{1,4}|[0-9]{1,5})(-(0[xX][0-9a-fA-F]{1,4}|[0-9]{1,5}))?))*" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="validCppIdentifier" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="validIdentifier" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[a-zA-Z0-9_]+" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="fontSize" final="restriction">
|
||||
<xs:restriction base="xs:unsignedInt">
|
||||
<xs:minInclusive value="1"/>
|
||||
<xs:maxInclusive value="1000"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="isVector" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="yes" />
|
||||
<xs:enumeration value="no" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<!--TextDatabase specification-->
|
||||
<xs:element name="TextDatabase">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Languages">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="Language">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Id" type="validCppIdentifier" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:sequence>
|
||||
<xs:element name="Texts">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="TextGroup">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="Text">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="1" maxOccurs="unbounded" name="Translation">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Language" type="validCppIdentifier" use="required" />
|
||||
<xs:attribute name="Alignment" type="alignment" use="optional" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="validIdentifier" use="required" />
|
||||
<xs:attribute name="Alignment" type="alignment" use="required" />
|
||||
<xs:attribute name="TypographyId" type="validCppIdentifier" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="validIdentifier" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:element name="Typographies">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="Typography">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="LanguageSetting">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Language" type="validCppIdentifier" use="required" />
|
||||
<xs:attribute name="Font" type="xs:string" use="required" />
|
||||
<xs:attribute name="Size" type="fontSize" use="required" />
|
||||
<xs:attribute name="Bpp" type="bpp" use="required" />
|
||||
<xs:attribute name="IsVector" type="isVector" use="required" />
|
||||
<xs:attribute name="Direction" type="direction" use="required" />
|
||||
<xs:attribute name="FallbackCharacter" type="fallbackCharacter" use="optional" />
|
||||
<xs:attribute name="WildcardCharacters" type="xs:string" use="optional" />
|
||||
<xs:attribute name="WidgetWildcardCharacters" type="xs:string" use="optional" />
|
||||
<xs:attribute name="WildcardCharacterRanges" type="wildcardCharacterRanges" use="optional" />
|
||||
<xs:attribute name="EllipsisCharacter" type="ellipsisCharacter" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Id" type="validCppIdentifier" use="required" />
|
||||
<xs:attribute name="Font" type="xs:string" use="required" />
|
||||
<xs:attribute name="Size" type="fontSize" use="required" />
|
||||
<xs:attribute name="Bpp" type="bpp" use="required" />
|
||||
<xs:attribute name="IsVector" type="isVector" use="required" />
|
||||
<xs:attribute name="Direction" type="direction" use="required" />
|
||||
<xs:attribute name="FallbackCharacter" type="fallbackCharacter" use="optional" />
|
||||
<xs:attribute name="WildcardCharacters" type="xs:string" use="optional" />
|
||||
<xs:attribute name="WidgetWildcardCharacters" type="xs:string" use="optional" />
|
||||
<xs:attribute name="WildcardCharacterRanges" type="wildcardCharacterRanges" use="optional" />
|
||||
<xs:attribute name="EllipsisCharacter" type="ellipsisCharacter" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Version" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
52
Software/TouchGFX/target/STM32TouchController.cpp
Normal file
52
Software/TouchGFX/target/STM32TouchController.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : STM32TouchController.cpp
|
||||
******************************************************************************
|
||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
||||
* generated once! Delete this file from your project and re-generate code
|
||||
* using STM32CubeMX or change this file manually to update it.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
/* USER CODE BEGIN STM32TouchController */
|
||||
|
||||
#include <STM32TouchController.hpp>
|
||||
|
||||
void STM32TouchController::init()
|
||||
{
|
||||
/**
|
||||
* Initialize touch controller and driver
|
||||
*
|
||||
*/
|
||||
}
|
||||
|
||||
bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)
|
||||
{
|
||||
/**
|
||||
* By default sampleTouch returns false,
|
||||
* return true if a touch has been detected, otherwise false.
|
||||
*
|
||||
* Coordinates are passed to the caller by reference by x and y.
|
||||
*
|
||||
* This function is called by the TouchGFX framework.
|
||||
* By default sampleTouch is called every tick, this can be adjusted by HAL::setTouchSampleRate(int8_t);
|
||||
*
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
/* USER CODE END STM32TouchController */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
72
Software/TouchGFX/target/STM32TouchController.hpp
Normal file
72
Software/TouchGFX/target/STM32TouchController.hpp
Normal file
@ -0,0 +1,72 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : STM32TouchController.hpp
|
||||
******************************************************************************
|
||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
||||
* generated once! Delete this file from your project and re-generate code
|
||||
* using STM32CubeMX or change this file manually to update it.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
/* USER CODE BEGIN STM32TouchController */
|
||||
|
||||
#ifndef STM32TOUCHCONTROLLER_HPP
|
||||
#define STM32TOUCHCONTROLLER_HPP
|
||||
|
||||
#include <platform/driver/touch/TouchController.hpp>
|
||||
|
||||
/**
|
||||
* @class STM32TouchController
|
||||
*
|
||||
* @brief This class specializes TouchController Interface.
|
||||
*
|
||||
* @sa touchgfx::TouchController
|
||||
*/
|
||||
|
||||
class STM32TouchController : public touchgfx::TouchController
|
||||
{
|
||||
public:
|
||||
|
||||
STM32TouchController() {}
|
||||
|
||||
/**
|
||||
* @fn virtual void STM32TouchController::init() = 0;
|
||||
*
|
||||
* @brief Initializes touch controller.
|
||||
*
|
||||
* Initializes touch controller.
|
||||
*/
|
||||
virtual void init();
|
||||
|
||||
/**
|
||||
* @fn virtual bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y) = 0;
|
||||
*
|
||||
* @brief Checks whether the touch screen is being touched, and if so, what coordinates.
|
||||
*
|
||||
* Checks whether the touch screen is being touched, and if so, what coordinates.
|
||||
*
|
||||
* @param [out] x The x position of the touch
|
||||
* @param [out] y The y position of the touch
|
||||
*
|
||||
* @return True if a touch has been detected, otherwise false.
|
||||
*/
|
||||
virtual bool sampleTouch(int32_t& x, int32_t& y);
|
||||
};
|
||||
|
||||
#endif // STM32TOUCHCONTROLLER_HPP
|
||||
|
||||
/* USER CODE END STM32TouchController */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
176
Software/TouchGFX/target/TouchGFXGPIO.cpp
Normal file
176
Software/TouchGFX/target/TouchGFXGPIO.cpp
Normal file
@ -0,0 +1,176 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXGPIO.cpp
|
||||
******************************************************************************
|
||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
||||
* generated once! Delete this file from your project and re-generate code
|
||||
* using STM32CubeMX or change this file manually to update it.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
#include <touchgfx/hal/GPIO.hpp>
|
||||
|
||||
/**
|
||||
* GPIO_ID Enum
|
||||
* The signals represented by this enum are used by TouchGFX framework to signal internal events.
|
||||
*
|
||||
* VSYNC_FREQ, /// Pin is toggled at each VSYNC
|
||||
* RENDER_TIME, /// Pin is high when frame rendering begins, low when finished
|
||||
* FRAME_RATE, /// Pin is toggled when the frame buffers are swapped.
|
||||
* MCU_ACTIVE /// Pin is high when framework is utilizing the MCU.
|
||||
*
|
||||
* Configure GPIO's with the same name as the GPIO_IDs above, as output, in CubeMX to export
|
||||
* the signals for performance measuring. See support.touchgfx.com for further details.
|
||||
*
|
||||
*/
|
||||
|
||||
/* USER CODE BEGIN TouchGFXGPIO.cpp */
|
||||
#include "main.h"
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
/*
|
||||
* Perform configuration of IO pins.
|
||||
*/
|
||||
void GPIO::init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets a pin high.
|
||||
*/
|
||||
void GPIO::set(GPIO_ID id)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case GPIO::VSYNC_FREQ:
|
||||
#if defined(VSYNC_FREQ_GPIO_Port) && defined(VSYNC_FREQ_Pin)
|
||||
HAL_GPIO_WritePin(VSYNC_FREQ_GPIO_Port, VSYNC_FREQ_Pin, GPIO_PIN_SET);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::RENDER_TIME:
|
||||
#if defined(RENDER_TIME_GPIO_Port) && defined(RENDER_TIME_Pin)
|
||||
HAL_GPIO_WritePin(RENDER_TIME_GPIO_Port, RENDER_TIME_Pin, GPIO_PIN_SET);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::FRAME_RATE:
|
||||
#if defined(FRAME_RATE_GPIO_Port) && defined(FRAME_RATE_Pin)
|
||||
HAL_GPIO_WritePin(FRAME_RATE_GPIO_Port, FRAME_RATE_Pin, GPIO_PIN_SET);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::MCU_ACTIVE:
|
||||
#if defined(MCU_ACTIVE_GPIO_Port) && defined(MCU_ACTIVE_Pin)
|
||||
HAL_GPIO_WritePin(MCU_ACTIVE_GPIO_Port, MCU_ACTIVE_Pin, GPIO_PIN_SET);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets a pin low.
|
||||
*/
|
||||
void GPIO::clear(GPIO_ID id)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case GPIO::VSYNC_FREQ:
|
||||
#if defined(VSYNC_FREQ_GPIO_Port) && defined(VSYNC_FREQ_Pin)
|
||||
HAL_GPIO_WritePin(VSYNC_FREQ_GPIO_Port, VSYNC_FREQ_Pin, GPIO_PIN_RESET);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::RENDER_TIME:
|
||||
#if defined(RENDER_TIME_GPIO_Port) && defined(RENDER_TIME_Pin)
|
||||
HAL_GPIO_WritePin(RENDER_TIME_GPIO_Port, RENDER_TIME_Pin, GPIO_PIN_RESET);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::FRAME_RATE:
|
||||
#if defined(FRAME_RATE_GPIO_Port) && defined(FRAME_RATE_Pin)
|
||||
HAL_GPIO_WritePin(FRAME_RATE_GPIO_Port, FRAME_RATE_Pin, GPIO_PIN_RESET);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::MCU_ACTIVE:
|
||||
#if defined(MCU_ACTIVE_GPIO_Port) && defined(MCU_ACTIVE_Pin)
|
||||
HAL_GPIO_WritePin(MCU_ACTIVE_GPIO_Port, MCU_ACTIVE_Pin, GPIO_PIN_RESET);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Toggles a pin.
|
||||
*/
|
||||
void GPIO::toggle(GPIO_ID id)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case GPIO::VSYNC_FREQ:
|
||||
#if defined(VSYNC_FREQ_GPIO_Port) && defined(VSYNC_FREQ_Pin)
|
||||
HAL_GPIO_TogglePin(VSYNC_FREQ_GPIO_Port, VSYNC_FREQ_Pin);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::RENDER_TIME:
|
||||
#if defined(RENDER_TIME_GPIO_Port) && defined(RENDER_TIME_Pin)
|
||||
HAL_GPIO_TogglePin(RENDER_TIME_GPIO_Port, RENDER_TIME_Pin);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::FRAME_RATE:
|
||||
#if defined(FRAME_RATE_GPIO_Port) && defined(FRAME_RATE_Pin)
|
||||
HAL_GPIO_TogglePin(FRAME_RATE_GPIO_Port, FRAME_RATE_Pin);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::MCU_ACTIVE:
|
||||
#if defined(MCU_ACTIVE_GPIO_Port) && defined(MCU_ACTIVE_Pin)
|
||||
HAL_GPIO_TogglePin(MCU_ACTIVE_GPIO_Port, MCU_ACTIVE_Pin);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Gets the state of a pin.
|
||||
*/
|
||||
bool GPIO::get(GPIO_ID id)
|
||||
{
|
||||
GPIO_PinState bitstatus = GPIO_PIN_RESET;
|
||||
switch (id)
|
||||
{
|
||||
case GPIO::VSYNC_FREQ:
|
||||
#if defined(VSYNC_FREQ_GPIO_Port) && defined(VSYNC_FREQ_Pin)
|
||||
bitstatus = HAL_GPIO_ReadPin(VSYNC_FREQ_GPIO_Port, VSYNC_FREQ_Pin);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::RENDER_TIME:
|
||||
#if defined(RENDER_TIME_GPIO_Port) && defined(RENDER_TIME_Pin)
|
||||
bitstatus = HAL_GPIO_ReadPin(RENDER_TIME_GPIO_Port, RENDER_TIME_Pin);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::FRAME_RATE:
|
||||
#if defined(FRAME_RATE_GPIO_Port) && defined(FRAME_RATE_Pin)
|
||||
bitstatus = HAL_GPIO_ReadPin(FRAME_RATE_GPIO_Port, FRAME_RATE_Pin);
|
||||
#endif
|
||||
break;
|
||||
case GPIO::MCU_ACTIVE:
|
||||
#if defined(MCU_ACTIVE_GPIO_Port) && defined(MCU_ACTIVE_Pin)
|
||||
bitstatus = HAL_GPIO_ReadPin(MCU_ACTIVE_GPIO_Port, MCU_ACTIVE_Pin);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return (bitstatus == GPIO_PIN_SET);
|
||||
}
|
||||
|
||||
/* USER CODE END TouchGFXGPIO.cpp */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
163
Software/TouchGFX/target/TouchGFXHAL.cpp
Normal file
163
Software/TouchGFX/target/TouchGFXHAL.cpp
Normal file
@ -0,0 +1,163 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXHAL.cpp
|
||||
******************************************************************************
|
||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
||||
* generated once! Delete this file from your project and re-generate code
|
||||
* using STM32CubeMX or change this file manually to update it.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
#include <TouchGFXHAL.hpp>
|
||||
|
||||
/* USER CODE BEGIN TouchGFXHAL.cpp */
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
void TouchGFXHAL::initialize()
|
||||
{
|
||||
// Calling parent implementation of initialize().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
// Please note, HAL::initialize() must be called to initialize the framework.
|
||||
|
||||
TouchGFXGeneratedHAL::initialize();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @return The address of the frame buffer currently being displayed on the TFT.
|
||||
*/
|
||||
uint16_t* TouchGFXHAL::getTFTFrameBuffer() const
|
||||
{
|
||||
// Calling parent implementation of getTFTFrameBuffer().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
return TouchGFXGeneratedHAL::getTFTFrameBuffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @param [in] address New frame buffer address.
|
||||
*/
|
||||
void TouchGFXHAL::setTFTFrameBuffer(uint16_t* address)
|
||||
{
|
||||
// Calling parent implementation of setTFTFrameBuffer(uint16_t* address).
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::setTFTFrameBuffer(address);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is called whenever the framework has performed a partial draw.
|
||||
*
|
||||
* @param rect The area of the screen that has been drawn, expressed in absolute coordinates.
|
||||
*
|
||||
* @see flushFrameBuffer().
|
||||
*/
|
||||
void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)
|
||||
{
|
||||
// Calling parent implementation of flushFrameBuffer(const touchgfx::Rect& rect).
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
// Please note, HAL::flushFrameBuffer(const touchgfx::Rect& rect) must
|
||||
// be called to notify the touchgfx framework that flush has been performed.
|
||||
// To calculate he start adress of rect,
|
||||
// use advanceFrameBufferToRect(uint8_t* fbPtr, const touchgfx::Rect& rect)
|
||||
// defined in TouchGFXGeneratedHAL.cpp
|
||||
|
||||
TouchGFXGeneratedHAL::flushFrameBuffer(rect);
|
||||
}
|
||||
|
||||
bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes)
|
||||
{
|
||||
return TouchGFXGeneratedHAL::blockCopy(dest, src, numBytes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures the interrupts relevant for TouchGFX. This primarily entails setting
|
||||
* the interrupt priorities for the DMA and LCD interrupts.
|
||||
*/
|
||||
void TouchGFXHAL::configureInterrupts()
|
||||
{
|
||||
// Calling parent implementation of configureInterrupts().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::configureInterrupts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for enabling interrupts set in configureInterrupts()
|
||||
*/
|
||||
void TouchGFXHAL::enableInterrupts()
|
||||
{
|
||||
// Calling parent implementation of enableInterrupts().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::enableInterrupts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for disabling interrupts set in configureInterrupts()
|
||||
*/
|
||||
void TouchGFXHAL::disableInterrupts()
|
||||
{
|
||||
// Calling parent implementation of disableInterrupts().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::disableInterrupts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure the LCD controller to fire interrupts at VSYNC. Called automatically
|
||||
* once TouchGFX initialization has completed.
|
||||
*/
|
||||
void TouchGFXHAL::enableLCDControllerInterrupt()
|
||||
{
|
||||
// Calling parent implementation of enableLCDControllerInterrupt().
|
||||
//
|
||||
// To overwrite the generated implementation, omit call to parent function
|
||||
// and implemented needed functionality here.
|
||||
|
||||
TouchGFXGeneratedHAL::enableLCDControllerInterrupt();
|
||||
}
|
||||
|
||||
bool TouchGFXHAL::beginFrame()
|
||||
{
|
||||
return TouchGFXGeneratedHAL::beginFrame();
|
||||
}
|
||||
|
||||
void TouchGFXHAL::endFrame()
|
||||
{
|
||||
TouchGFXGeneratedHAL::endFrame();
|
||||
}
|
||||
|
||||
/* USER CODE END TouchGFXHAL.cpp */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
171
Software/TouchGFX/target/TouchGFXHAL.hpp
Normal file
171
Software/TouchGFX/target/TouchGFXHAL.hpp
Normal file
@ -0,0 +1,171 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXHAL.hpp
|
||||
******************************************************************************
|
||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
||||
* generated once! Delete this file from your project and re-generate code
|
||||
* using STM32CubeMX or change this file manually to update it.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
#ifndef TouchGFXHAL_HPP
|
||||
#define TouchGFXHAL_HPP
|
||||
|
||||
/* USER CODE BEGIN TouchGFXHAL.hpp */
|
||||
|
||||
#include <TouchGFXGeneratedHAL.hpp>
|
||||
|
||||
/**
|
||||
* @class TouchGFXHAL
|
||||
*
|
||||
* @brief HAL implementation for TouchGFX.
|
||||
*
|
||||
* @sa HAL
|
||||
*/
|
||||
class TouchGFXHAL : public TouchGFXGeneratedHAL
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn TouchGFXHAL::TouchGFXHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) : TouchGFXGeneratedHAL(dma, display, tc, width, height)
|
||||
*
|
||||
* @brief Constructor.
|
||||
*
|
||||
* Constructor. Initializes members.
|
||||
*
|
||||
* @param [in,out] dma Reference to DMA interface.
|
||||
* @param [in,out] display Reference to LCD interface.
|
||||
* @param [in,out] tc Reference to Touch Controller driver.
|
||||
* @param width Width of the display.
|
||||
* @param height Height of the display.
|
||||
*/
|
||||
TouchGFXHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) : TouchGFXGeneratedHAL(dma, display, tc, width, height)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void initialize();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::disableInterrupts();
|
||||
*
|
||||
* @brief Disables the DMA and LCD interrupts.
|
||||
*
|
||||
* Disables the DMA and LCD interrupts.
|
||||
*/
|
||||
virtual void disableInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::enableInterrupts();
|
||||
*
|
||||
* @brief Enables the DMA and LCD interrupts.
|
||||
*
|
||||
* Enables the DMA and LCD interrupts.
|
||||
*/
|
||||
virtual void enableInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::configureInterrupts();
|
||||
*
|
||||
* @brief Sets the DMA and LCD interrupt priorities.
|
||||
*
|
||||
* Sets the DMA and LCD interrupt priorities.
|
||||
*/
|
||||
virtual void configureInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::enableLCDControllerInterrupt();
|
||||
*
|
||||
* @brief Configure the LCD controller to fire interrupts at VSYNC.
|
||||
*
|
||||
* Configure the LCD controller to fire interrupts at VSYNC. Called automatically
|
||||
* once TouchGFX initialization has completed.
|
||||
*/
|
||||
virtual void enableLCDControllerInterrupt();
|
||||
|
||||
virtual bool beginFrame();
|
||||
|
||||
virtual void endFrame();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::flushFrameBuffer();
|
||||
*
|
||||
* @brief This function is called whenever the framework has performed a complete draw.
|
||||
*
|
||||
* This specialization is only in place to keep compilers happy. Base impl. will call the
|
||||
* Rect version.
|
||||
* @see HAL::flushFrameBuffer
|
||||
*/
|
||||
virtual void flushFrameBuffer()
|
||||
{
|
||||
TouchGFXGeneratedHAL::flushFrameBuffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::flushFrameBuffer(const Rect& rect);
|
||||
*
|
||||
* @brief This function is called whenever the framework has performed a partial draw.
|
||||
*
|
||||
* This function is called whenever the framework has performed a partial draw.
|
||||
* On the STM32F7, make sure to clean and invalidate the data cache. This is to
|
||||
* ensure that LTDC sees correct data when transferring to the display.
|
||||
*
|
||||
* @param rect The area of the screen that has been drawn, expressed in absolute coordinates.
|
||||
*
|
||||
* @see flushFrameBuffer().
|
||||
*/
|
||||
virtual void flushFrameBuffer(const touchgfx::Rect& rect);
|
||||
|
||||
/**
|
||||
* @fn virtual bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes);
|
||||
*
|
||||
* @brief This function performs a platform-specific memcpy.
|
||||
*
|
||||
* This function performs a platform-specific memcpy, if supported by the hardware.
|
||||
*
|
||||
* @param [out] dest Pointer to destination memory.
|
||||
* @param [in] src Pointer to source memory.
|
||||
* @param numBytes Number of bytes to copy.
|
||||
*
|
||||
* @return true if the copy succeeded, false if copy was not performed.
|
||||
*/
|
||||
virtual bool blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @fn virtual uint16_t* TouchGFXHAL::getTFTFrameBuffer() const;
|
||||
*
|
||||
* @brief Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @return The address of the frame buffer currently being displayed on the TFT.
|
||||
*/
|
||||
virtual uint16_t* getTFTFrameBuffer() const;
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXHAL::setTFTFrameBuffer(uint16_t* adr);
|
||||
*
|
||||
* @brief Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @param [in,out] adr New frame buffer address.
|
||||
*/
|
||||
virtual void setTFTFrameBuffer(uint16_t* adr);
|
||||
};
|
||||
|
||||
/* USER CODE END TouchGFXHAL.hpp */
|
||||
|
||||
#endif // TouchGFXHAL_HPP
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
162
Software/TouchGFX/target/generated/OSWrappers.cpp
Normal file
162
Software/TouchGFX/target/generated/OSWrappers.cpp
Normal file
@ -0,0 +1,162 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : OSWrappers.cpp
|
||||
******************************************************************************
|
||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <cassert>
|
||||
#include <touchgfx/hal/HAL.hpp>
|
||||
#include <touchgfx/hal/OSWrappers.hpp>
|
||||
|
||||
#include <stm32h7xx_hal.h>
|
||||
#include <touchgfx/hal/OSWrappers.hpp>
|
||||
|
||||
static volatile uint32_t fb_sem;
|
||||
static volatile uint32_t vsync_sem;
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
/*
|
||||
* Initialize frame buffer semaphore and queue/mutex for VSYNC signal.
|
||||
*/
|
||||
void OSWrappers::initialize()
|
||||
{
|
||||
fb_sem = 0;
|
||||
vsync_sem = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Take the frame buffer semaphore. Blocks until semaphore is available.
|
||||
*/
|
||||
void OSWrappers::takeFrameBufferSemaphore()
|
||||
{
|
||||
while(fb_sem);
|
||||
fb_sem = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Release the frame buffer semaphore.
|
||||
*/
|
||||
void OSWrappers::giveFrameBufferSemaphore()
|
||||
{
|
||||
fb_sem = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Attempt to obtain the frame buffer semaphore. If semaphore is not available, do
|
||||
* nothing.
|
||||
*
|
||||
* Note must return immediately! This function does not care who has the taken the semaphore,
|
||||
* it only serves to make sure that the semaphore is taken by someone.
|
||||
*/
|
||||
void OSWrappers::tryTakeFrameBufferSemaphore()
|
||||
{
|
||||
fb_sem = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Release the frame buffer semaphore in a way that is safe in interrupt context. Called
|
||||
* from ISR.
|
||||
*
|
||||
* Release the frame buffer semaphore in a way that is safe in interrupt context.
|
||||
* Called from ISR.
|
||||
*/
|
||||
void OSWrappers::giveFrameBufferSemaphoreFromISR()
|
||||
{
|
||||
fb_sem = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Signal that a VSYNC has occurred. Should make the vsync queue/mutex available.
|
||||
*
|
||||
* Note This function is called from an ISR, and should (depending on OS) trigger a
|
||||
* scheduling.
|
||||
*/
|
||||
void OSWrappers::signalVSync()
|
||||
{
|
||||
vsync_sem = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Signal that the rendering of the frame has completed. Used by
|
||||
* some systems to avoid using any previous vsync.
|
||||
*/
|
||||
void OSWrappers::signalRenderingDone()
|
||||
{
|
||||
vsync_sem = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function checks if a VSync occurred after last rendering.
|
||||
* The function is used in systems that cannot wait in waitForVSync
|
||||
* (because they are also checking other event sources.
|
||||
*
|
||||
* @note signalRenderingDone is typically used together with this function.
|
||||
*
|
||||
* @return True if VSync occurred.
|
||||
*/
|
||||
bool OSWrappers::isVSyncAvailable()
|
||||
{
|
||||
return vsync_sem;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function check if a VSYNC has occured.
|
||||
* If VSYNC has occured, signal TouchGFX to start a rendering
|
||||
*/
|
||||
void OSWrappers::waitForVSync()
|
||||
{
|
||||
if(vsync_sem)
|
||||
{
|
||||
vsync_sem = 0;
|
||||
HAL::getInstance()->backPorchExited();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* A function that causes executing task to sleep for a number of milliseconds.
|
||||
*
|
||||
* A function that causes executing task to sleep for a number of milliseconds.
|
||||
* This function is OPTIONAL. It is only used by the TouchGFX in the case of
|
||||
* a specific frame refresh strategy (REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL).
|
||||
* Due to backwards compatibility, in order for this function to be useable by the HAL
|
||||
* the function must be explicitly registered:
|
||||
* hal.registerTaskDelayFunction(&OSWrappers::taskDelay)
|
||||
*
|
||||
* see HAL::setFrameRefreshStrategy(FrameRefreshStrategy s)
|
||||
* see HAL::registerTaskDelayFunction(void (*delayF)(uint16_t))
|
||||
*/
|
||||
void OSWrappers::taskDelay(uint16_t ms)
|
||||
{
|
||||
HAL_Delay(ms);
|
||||
}
|
||||
|
||||
/**
|
||||
* A function that causes the executing task to yield control to
|
||||
* another thread. This function is used by the framework when it
|
||||
* is necessary to wait a little before continuing (e.g. drawing).
|
||||
*
|
||||
* The implementation should typically request the operating
|
||||
* system to change to another task of similar priority. When
|
||||
* running without an operating system, the implementation can run
|
||||
* a very short task and return.
|
||||
*/
|
||||
void OSWrappers::taskYield()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
||||
42
Software/TouchGFX/target/generated/STM32DMA.cpp
Normal file
42
Software/TouchGFX/target/generated/STM32DMA.cpp
Normal file
@ -0,0 +1,42 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : STM32DMA.cpp
|
||||
******************************************************************************
|
||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <STM32DMA.hpp>
|
||||
#include <assert.h>
|
||||
|
||||
STM32DMA::STM32DMA()
|
||||
: DMA_Interface(q), q(&b, 1)
|
||||
{
|
||||
}
|
||||
|
||||
touchgfx::BlitOperations STM32DMA::getBlitCaps()
|
||||
{
|
||||
return static_cast<touchgfx::BlitOperations>(0);
|
||||
}
|
||||
|
||||
void STM32DMA::setupDataCopy(const touchgfx::BlitOp& blitOp)
|
||||
{
|
||||
assert(0 && "DMA operation not supported");
|
||||
}
|
||||
|
||||
void STM32DMA::setupDataFill(const touchgfx::BlitOp& blitOp)
|
||||
{
|
||||
assert(0 && "DMA operation not supported");
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
93
Software/TouchGFX/target/generated/STM32DMA.hpp
Normal file
93
Software/TouchGFX/target/generated/STM32DMA.hpp
Normal file
@ -0,0 +1,93 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : STM32DMA.hpp
|
||||
******************************************************************************
|
||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef STM32DMA_HPP
|
||||
#define STM32DMA_HPP
|
||||
|
||||
#include <touchgfx/hal/BlitOp.hpp>
|
||||
#include <touchgfx/hal/DMA.hpp>
|
||||
|
||||
/**
|
||||
* @class STM32DMA
|
||||
*
|
||||
* @brief This class specializes DMA_Interface for the STM32 processors.
|
||||
*
|
||||
* @see touchgfx::DMA_Interface
|
||||
*/
|
||||
class STM32DMA : public touchgfx::DMA_Interface
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn STM32DMA::STM32DMA();
|
||||
*
|
||||
* @brief Default constructor.
|
||||
*/
|
||||
STM32DMA();
|
||||
|
||||
/**
|
||||
* @fn touchgfx::BlitOperations STM32DMA::getBlitCaps();
|
||||
*
|
||||
* @brief No blit operations supported by this DMA implementation.
|
||||
*
|
||||
* @return Zero (no blit ops supported).
|
||||
*/
|
||||
virtual touchgfx::BlitOperations getBlitCaps();
|
||||
|
||||
/**
|
||||
* @fn virtual void STM32DMA::setupDataCopy(const touchgfx::BlitOp& blitOp);
|
||||
*
|
||||
* @brief Asserts if used.
|
||||
*
|
||||
* @param blitOp The blit operation to be performed by this DMA instance.
|
||||
*/
|
||||
virtual void setupDataCopy(const touchgfx::BlitOp& blitOp);
|
||||
|
||||
/**
|
||||
* @fn virtual void STM32DMA::setupDataFill(const touchgfx::BlitOp& blitOp);
|
||||
*
|
||||
* @brief Asserts if used.
|
||||
*
|
||||
* @param blitOp The blit operation to be performed by this DMA instance.
|
||||
*/
|
||||
virtual void setupDataFill(const touchgfx::BlitOp& blitOp);
|
||||
|
||||
/**
|
||||
* @fn virtual void STM32DMA::signalDMAInterrupt();
|
||||
*
|
||||
* @brief Does nothing.
|
||||
*/
|
||||
virtual void signalDMAInterrupt()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn virtual void STM32DMA::flush();
|
||||
*
|
||||
* @brief Block until all DMA transfers are complete. Since this particular DMA does not do
|
||||
* anything, return immediately.
|
||||
*/
|
||||
virtual void flush()
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
touchgfx::LockFreeDMA_Queue q;
|
||||
touchgfx::BlitOp b;
|
||||
};
|
||||
#endif // TOUCHGFX_NODMA_HPP
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
78
Software/TouchGFX/target/generated/TouchGFXConfiguration.cpp
Normal file
78
Software/TouchGFX/target/generated/TouchGFXConfiguration.cpp
Normal file
@ -0,0 +1,78 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXConfiguration.cpp
|
||||
******************************************************************************
|
||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <texts/TypedTextDatabase.hpp>
|
||||
#include <fonts/ApplicationFontProvider.hpp>
|
||||
#include <gui/common/FrontendHeap.hpp>
|
||||
#include <BitmapDatabase.hpp>
|
||||
#include <platform/driver/lcd/LCD24bpp.hpp>
|
||||
#include <touchgfx/hal/OSWrappers.hpp>
|
||||
#include <STM32DMA.hpp>
|
||||
#include <TouchGFXHAL.hpp>
|
||||
#include <STM32TouchController.hpp>
|
||||
#include <stm32h7xx_hal.h>
|
||||
|
||||
extern "C" void touchgfx_init();
|
||||
extern "C" void touchgfx_taskEntry();
|
||||
extern "C" void touchgfx_components_init();
|
||||
|
||||
static STM32TouchController tc;
|
||||
static STM32DMA dma;
|
||||
static LCD24bpp display;
|
||||
static ApplicationFontProvider fontProvider;
|
||||
static Texts texts;
|
||||
static TouchGFXHAL hal(dma, display, tc, 1024, 600);
|
||||
|
||||
void touchgfx_init()
|
||||
{
|
||||
Bitmap::registerBitmapDatabase(BitmapDatabase::getInstance(), BitmapDatabase::getInstanceSize());
|
||||
TypedText::registerTexts(&texts);
|
||||
Texts::setLanguage(0);
|
||||
|
||||
FontManager::setFontProvider(&fontProvider);
|
||||
|
||||
FrontendHeap& heap = FrontendHeap::getInstance();
|
||||
/*
|
||||
* we need to obtain the reference above to initialize the frontend heap.
|
||||
*/
|
||||
(void)heap;
|
||||
|
||||
/*
|
||||
* Initialize TouchGFX
|
||||
*/
|
||||
hal.initialize();
|
||||
}
|
||||
|
||||
void touchgfx_components_init()
|
||||
{
|
||||
}
|
||||
|
||||
void touchgfx_taskEntry()
|
||||
{
|
||||
/*
|
||||
* Main event loop will check for VSYNC signal, and then process next frame.
|
||||
*
|
||||
* Note This function returns immediately if there is no VSYNC signal.
|
||||
*/
|
||||
if (OSWrappers::isVSyncAvailable())
|
||||
{
|
||||
hal.backPorchExited();
|
||||
}
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
187
Software/TouchGFX/target/generated/TouchGFXGeneratedHAL.cpp
Normal file
187
Software/TouchGFX/target/generated/TouchGFXGeneratedHAL.cpp
Normal file
@ -0,0 +1,187 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXGeneratedHAL.cpp
|
||||
******************************************************************************
|
||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include <TouchGFXGeneratedHAL.hpp>
|
||||
#include <touchgfx/hal/OSWrappers.hpp>
|
||||
#include <gui/common/FrontendHeap.hpp>
|
||||
#include <touchgfx/hal/GPIO.hpp>
|
||||
#include <touchgfx/hal/PaintImpl.hpp>
|
||||
#include <touchgfx/hal/PaintRGB888Impl.hpp>
|
||||
|
||||
#include "stm32h7xx.h"
|
||||
#include "stm32h7xx_hal_ltdc.h"
|
||||
|
||||
using namespace touchgfx;
|
||||
|
||||
namespace
|
||||
{
|
||||
// Use the section "TouchGFX_Framebuffer" in the linker script to specify the placement of the buffer
|
||||
LOCATION_PRAGMA_NOLOAD("TouchGFX_Framebuffer")
|
||||
uint32_t frameBuf[(1024 * 600 * 3 + 3) / 4] LOCATION_ATTRIBUTE_NOLOAD("TouchGFX_Framebuffer");
|
||||
static volatile bool refreshRequested = false;
|
||||
static uint16_t lcd_int_active_line;
|
||||
static uint16_t lcd_int_porch_line;
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::initialize()
|
||||
{
|
||||
HAL::initialize();
|
||||
registerEventListener(*(Application::getInstance()));
|
||||
registerTaskDelayFunction(&OSWrappers::taskDelay);
|
||||
setFrameRefreshStrategy(HAL::REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL);
|
||||
enableLCDControllerInterrupt();
|
||||
enableInterrupts();
|
||||
setFrameBufferStartAddresses((void*)frameBuf, (void*)0, (void*)0);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::configureInterrupts()
|
||||
{
|
||||
NVIC_SetPriority(LTDC_IRQn, 9);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::enableInterrupts()
|
||||
{
|
||||
NVIC_EnableIRQ(LTDC_IRQn);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::disableInterrupts()
|
||||
{
|
||||
NVIC_DisableIRQ(LTDC_IRQn);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::enableLCDControllerInterrupt()
|
||||
{
|
||||
lcd_int_active_line = (LTDC->BPCR & 0x7FF) - 1;
|
||||
lcd_int_porch_line = (LTDC->AWCR & 0x7FF) - 1;
|
||||
|
||||
/* Sets the Line Interrupt position */
|
||||
LTDC->LIPCR = lcd_int_active_line;
|
||||
/* Line Interrupt Enable */
|
||||
LTDC->IER |= LTDC_IER_LIE;
|
||||
}
|
||||
|
||||
bool TouchGFXGeneratedHAL::beginFrame()
|
||||
{
|
||||
return HAL::beginFrame();
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::endFrame()
|
||||
{
|
||||
if (frameBufferUpdatedThisFrame)
|
||||
{
|
||||
refreshRequested = true;
|
||||
}
|
||||
HAL::endFrame();
|
||||
touchgfx::OSWrappers::signalRenderingDone();
|
||||
}
|
||||
|
||||
uint16_t* TouchGFXGeneratedHAL::getTFTFrameBuffer() const
|
||||
{
|
||||
return (uint16_t*)LTDC_Layer1->CFBAR;
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::setTFTFrameBuffer(uint16_t* adr)
|
||||
{
|
||||
LTDC_Layer1->CFBAR = (uint32_t)adr;
|
||||
|
||||
/* Reload immediate */
|
||||
LTDC->SRCR = (uint32_t)LTDC_SRCR_IMR;
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::flushFrameBuffer(const touchgfx::Rect& rect)
|
||||
{
|
||||
HAL::flushFrameBuffer(rect);
|
||||
}
|
||||
|
||||
bool TouchGFXGeneratedHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes)
|
||||
{
|
||||
return HAL::blockCopy(dest, src, numBytes);
|
||||
}
|
||||
|
||||
uint16_t TouchGFXGeneratedHAL::getTFTCurrentLine()
|
||||
{
|
||||
// This function only requires an implementation if single buffering
|
||||
// on LTDC display is being used (REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL).
|
||||
|
||||
// The CPSR register (bits 15:0) specify current line of TFT controller.
|
||||
uint16_t curr = (uint16_t)(LTDC->CPSR & 0xffff);
|
||||
uint16_t backPorchY = (uint16_t)(LTDC->BPCR & 0x7FF) + 1;
|
||||
|
||||
// The semantics of the getTFTCurrentLine() function is to return a value
|
||||
// in the range of 0-totalheight. If we are still in back porch area, return 0.
|
||||
return (curr < backPorchY) ? 0 : (curr - backPorchY);
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::InvalidateCache()
|
||||
{
|
||||
// If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then
|
||||
// the DCache must be flushed prior to DMA2D accessing it. That's done
|
||||
// using the function SCB_CleanInvalidateDCache(). Remember to enable "CPU Cache" in the
|
||||
// "System Core" settings for "Cortex M7" in CubeMX in order for this function call to work.
|
||||
if (SCB->CCR & SCB_CCR_DC_Msk)
|
||||
{
|
||||
SCB_CleanInvalidateDCache();
|
||||
}
|
||||
}
|
||||
|
||||
void TouchGFXGeneratedHAL::FlushCache()
|
||||
{
|
||||
// If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then
|
||||
// the DCache must be flushed prior to DMA2D accessing it. That's done
|
||||
// using the function SCB_CleanInvalidateDCache(). Remember to enable "CPU Cache" in the
|
||||
// "System Core" settings for "Cortex M7" in CubeMX in order for this function call to work.
|
||||
if (SCB->CCR & SCB_CCR_DC_Msk)
|
||||
{
|
||||
SCB_CleanInvalidateDCache();
|
||||
}
|
||||
}
|
||||
|
||||
extern "C"
|
||||
{
|
||||
void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef* hltdc)
|
||||
{
|
||||
if (!HAL::getInstance())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (LTDC->LIPCR == lcd_int_active_line)
|
||||
{
|
||||
//entering active area
|
||||
HAL_LTDC_ProgramLineEvent(hltdc, lcd_int_porch_line);
|
||||
HAL::getInstance()->vSync();
|
||||
OSWrappers::signalVSync();
|
||||
|
||||
// Swap frame buffers immediately instead of waiting for the task to be scheduled in.
|
||||
// Note: task will also swap when it wakes up, but that operation is guarded and will not have
|
||||
// any effect if already swapped.
|
||||
HAL::getInstance()->swapFrameBuffers();
|
||||
GPIO::set(GPIO::VSYNC_FREQ);
|
||||
}
|
||||
else
|
||||
{
|
||||
//exiting active area
|
||||
HAL_LTDC_ProgramLineEvent(hltdc, lcd_int_active_line);
|
||||
|
||||
// Signal to the framework that display update has finished.
|
||||
HAL::getInstance()->frontPorchEntered();
|
||||
GPIO::clear(GPIO::VSYNC_FREQ);
|
||||
}
|
||||
}
|
||||
}
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
213
Software/TouchGFX/target/generated/TouchGFXGeneratedHAL.hpp
Normal file
213
Software/TouchGFX/target/generated/TouchGFXGeneratedHAL.hpp
Normal file
@ -0,0 +1,213 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* File Name : TouchGFXGeneratedHAL.hpp
|
||||
******************************************************************************
|
||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef TouchGFXGeneratedHAL_HPP
|
||||
#define TouchGFXGeneratedHAL_HPP
|
||||
|
||||
#include <touchgfx/hal/HAL.hpp>
|
||||
|
||||
/**
|
||||
* @class TouchGFXGeneratedHAL
|
||||
*
|
||||
* @brief HAL implementation for TouchGFXGenerated.
|
||||
*
|
||||
* @sa HAL
|
||||
*/
|
||||
class TouchGFXGeneratedHAL : public touchgfx::HAL
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* @fn TouchGFXGeneratedHAL::TouchGFXGeneratedHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) : touchgfx::HAL(dma, display, tc, width, height)
|
||||
*
|
||||
* @brief Constructor.
|
||||
*
|
||||
* Constructor. Initializes members.
|
||||
*
|
||||
* @param [in,out] dma Reference to DMA interface.
|
||||
* @param [in,out] display Reference to LCD interface.
|
||||
* @param [in,out] tc Reference to Touch Controller driver.
|
||||
* @param width Width of the display.
|
||||
* @param height Height of the display.
|
||||
*/
|
||||
TouchGFXGeneratedHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) :
|
||||
touchgfx::HAL(dma, display, tc, width, height)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn void TouchGFXGeneratedHAL::initialize();
|
||||
*
|
||||
* @brief This function is responsible for initializing the entire framework.
|
||||
*
|
||||
* This function is responsible for initializing the entire framework.
|
||||
*/
|
||||
virtual void initialize();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::configureInterrupts();
|
||||
*
|
||||
* @brief Sets the DMA and LCD interrupt priorities.
|
||||
*
|
||||
* Sets the DMA and LCD interrupt priorities.
|
||||
*/
|
||||
virtual void configureInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::enableInterrupts();
|
||||
*
|
||||
* @brief Enables the DMA and LCD interrupts.
|
||||
*
|
||||
* Enables the DMA and LCD interrupts.
|
||||
*/
|
||||
virtual void enableInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::disableInterrupts();
|
||||
*
|
||||
* @brief Disables the DMA and LCD interrupts.
|
||||
*
|
||||
* Disables the DMA and LCD interrupts.
|
||||
*/
|
||||
virtual void disableInterrupts();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::enableLCDControllerInterrupt();
|
||||
*
|
||||
* @brief Configure the LCD controller to fire interrupts at VSYNC.
|
||||
*
|
||||
* Configure the LCD controller to fire interrupts at VSYNC. Called automatically
|
||||
* once TouchGFX initialization has completed.
|
||||
*/
|
||||
virtual void enableLCDControllerInterrupt();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::flushFrameBuffer();
|
||||
*
|
||||
* @brief This function is called whenever the framework has performed a complete draw.
|
||||
*
|
||||
* This specialization is only in place to keep compilers happy. Base impl. will call the
|
||||
* Rect version.
|
||||
* @see HAL::flushFrameBuffer
|
||||
*/
|
||||
virtual void flushFrameBuffer()
|
||||
{
|
||||
HAL::flushFrameBuffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::flushFrameBuffer(const touchgfx::Rect& rect);
|
||||
*
|
||||
* @brief This function is called whenever the framework has performed a partial draw.
|
||||
*
|
||||
* This function is called whenever the framework has performed a partial draw.
|
||||
* On the STM32F7, make sure to clean and invalidate the data cache. This is to
|
||||
* ensure that LTDC sees correct data when transferring to the display.
|
||||
*
|
||||
* @param rect The area of the screen that has been drawn, expressed in absolute coordinates.
|
||||
*
|
||||
* @see flushFrameBuffer().
|
||||
*/
|
||||
virtual void flushFrameBuffer(const touchgfx::Rect& rect);
|
||||
|
||||
/**
|
||||
*
|
||||
* @fn virtual void TouchGFXGeneratedHAL::blockCopy();
|
||||
*
|
||||
* This function performs a platform-specific memcpy, if supported by the hardware.
|
||||
*
|
||||
* @param [out] dest Pointer to destination memory.
|
||||
* @param [in] src Pointer to source memory.
|
||||
* @param numBytes Number of bytes to copy.
|
||||
*
|
||||
* @return true if the copy succeeded, false if copy was not performed.
|
||||
*/
|
||||
virtual bool blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes);
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::beginFrame();
|
||||
*
|
||||
* @brief Called when beginning to rendering a frame.
|
||||
*
|
||||
* Called when beginning to rendering a frame.
|
||||
*
|
||||
* @return true if rendering can begin, false otherwise.
|
||||
*/
|
||||
virtual bool beginFrame();
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::endFrame();
|
||||
*
|
||||
* @brief Called when a rendering pass is completed.
|
||||
*
|
||||
* Called when a rendering pass is completed.
|
||||
*/
|
||||
virtual void endFrame();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @fn virtual uint16_t* TouchGFXGeneratedHAL::getTFTFrameBuffer() const;
|
||||
*
|
||||
* @brief Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* Gets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @return The address of the frame buffer currently being displayed on the TFT.
|
||||
*/
|
||||
virtual uint16_t* getTFTFrameBuffer() const;
|
||||
|
||||
/**
|
||||
* @fn virtual void TouchGFXGeneratedHAL::setTFTFrameBuffer(uint16_t* adr);
|
||||
*
|
||||
* @brief Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* Sets the frame buffer address used by the TFT controller.
|
||||
*
|
||||
* @param [in,out] adr New frame buffer address.
|
||||
*/
|
||||
virtual void setTFTFrameBuffer(uint16_t* adr);
|
||||
|
||||
/**
|
||||
* @fn virtual uint16_t TouchGFXGeneratedHAL::getTFTCurrentLine()
|
||||
*
|
||||
* @brief Get the current line (Y) of the TFT controller
|
||||
*
|
||||
* This function is used to obtain the progress of the TFT controller. More
|
||||
* specifically, the line (or Y-value) currently being transferred.
|
||||
*
|
||||
* Note: The value must be adjusted to account for vertical back porch before
|
||||
* returning, such that the value is always within the range of 0 <= value <
|
||||
* actual display height in pixels
|
||||
*
|
||||
* It is used for the REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL frame refresh
|
||||
* strategy in order to synchronize frame buffer drawing with TFT controller
|
||||
* progress. If this strategy is used, the concrete HAL subclass must provide an
|
||||
* override of this function that returns correct line value. If this strategy is
|
||||
* not used, then the getTFTCurrentLine function is never called and can be
|
||||
* disregarded.
|
||||
*
|
||||
* @return In this default implementation, 0xFFFF is returned to signify "not implemented".
|
||||
*/
|
||||
virtual uint16_t getTFTCurrentLine();
|
||||
|
||||
virtual void InvalidateCache();
|
||||
|
||||
virtual void FlushCache();
|
||||
|
||||
};
|
||||
#endif // TouchGFXGeneratedHAL_HPP
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
Reference in New Issue
Block a user