Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
07d5fdb434 |
@ -1107,7 +1107,7 @@
|
||||
|
||||
// <e> I2C3 (Inter-integrated Circuit Interface 3) [Driver_I2C3]
|
||||
// <i> Configuration settings for Driver_I2C3 in component ::CMSIS Driver:I2C
|
||||
#define RTE_I2C3 0
|
||||
#define RTE_I2C3 1
|
||||
|
||||
// <o> I2C3_SCL Pin <0=>PH7 <1=>PA8
|
||||
#define RTE_I2C3_SCL_PORT_ID 0
|
||||
|
38
RTE/Hesso_pack/clock_216.c
Normal file
38
RTE/Hesso_pack/clock_216.c
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
#include "stm32f7xx_hal.h"
|
||||
#include "clock_216.h"
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
//------------------------------------------------------------------------------
|
||||
//------------------------------------------------------------------------------
|
||||
// Setup system clock to 216MHz
|
||||
//------------------------------------------------------------------------------
|
||||
void SystemClock_Config (void) {
|
||||
RCC_ClkInitTypeDef RCC_ClkInitStruct;
|
||||
RCC_OscInitTypeDef RCC_OscInitStruct;
|
||||
|
||||
/* Enable HSE Oscillator and activate PLL with HSE as source */
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
||||
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
||||
RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
|
||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
||||
RCC_OscInitStruct.PLL.PLLM = 25;
|
||||
RCC_OscInitStruct.PLL.PLLN = 432;
|
||||
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
||||
RCC_OscInitStruct.PLL.PLLQ = 9;
|
||||
HAL_RCC_OscConfig(&RCC_OscInitStruct);
|
||||
|
||||
/* Activate the OverDrive to reach the 216 MHz Frequency */
|
||||
HAL_PWREx_EnableOverDrive();
|
||||
|
||||
/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
|
||||
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
|
||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
|
||||
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
|
||||
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7);
|
||||
}
|
||||
|
||||
|
17
RTE/Hesso_pack/clock_216.h
Normal file
17
RTE/Hesso_pack/clock_216.h
Normal file
@ -0,0 +1,17 @@
|
||||
/************************************************************************//**
|
||||
* \file clock_216.h
|
||||
* \brief Function to set the system clock to 216 MHz
|
||||
* \author pascal (dot) sartoretti (at) hevs (dot) ch
|
||||
***************************************************************************/
|
||||
#ifndef __CLOCK_216_H
|
||||
#define __CLOCK_216_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/************************************************************************//**
|
||||
* \brief Inits the system clock to 216 MHz
|
||||
***************************************************************************/
|
||||
extern void SystemClock_Config (void);
|
||||
|
||||
|
||||
#endif /* __CLOCK_216_H */
|
@ -26,10 +26,13 @@
|
||||
/* Keil.ARM Compiler::Compiler:I/O:STDOUT:ITM:1.2.0 */
|
||||
#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */
|
||||
#define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */
|
||||
/* Keil::CMSIS Driver:I2C:1.9.0 */
|
||||
#define RTE_Drivers_I2C1 /* Driver I2C1 */
|
||||
#define RTE_Drivers_I2C2 /* Driver I2C2 */
|
||||
#define RTE_Drivers_I2C3 /* Driver I2C3 */
|
||||
#define RTE_Drivers_I2C4 /* Driver I2C4 */
|
||||
/* Keil::Device:STM32Cube Framework:Classic:1.2.7 */
|
||||
#define RTE_DEVICE_FRAMEWORK_CLASSIC
|
||||
/* Keil::Device:STM32Cube HAL:CRC:1.2.7 */
|
||||
#define RTE_DEVICE_HAL_CRC
|
||||
/* Keil::Device:STM32Cube HAL:Common:1.2.7 */
|
||||
#define RTE_DEVICE_HAL_COMMON
|
||||
/* Keil::Device:STM32Cube HAL:Cortex:1.2.7 */
|
||||
|
473
RTE/uGFX_library/gfxconf.h
Normal file
473
RTE/uGFX_library/gfxconf.h
Normal file
@ -0,0 +1,473 @@
|
||||
/**
|
||||
* This file has a different license to the rest of the uGFX system.
|
||||
* You can copy, modify and distribute this file as you see fit.
|
||||
* You do not need to publish your source modifications to this file.
|
||||
* The only thing you are not permitted to do is to relicense it
|
||||
* under a different license.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Copy this file into your project directory and rename it as gfxconf.h
|
||||
* Edit your copy to turn on the uGFX features you want to use.
|
||||
* The values below are the defaults.
|
||||
*
|
||||
* Only remove the comments from lines where you want to change the
|
||||
* default value. This allows definitions to be included from
|
||||
* driver makefiles when required and provides the best future
|
||||
* compatibility for your project.
|
||||
*
|
||||
* Please use spaces instead of tabs in this file.
|
||||
*/
|
||||
//* <<< Use Configuration Wizard in Context Menu >>>
|
||||
#ifndef _GFXCONF_H
|
||||
#define _GFXCONF_H
|
||||
//<h> uGFX configuration with RTX5 operating system.
|
||||
//<i> Full documentation available at: https://wiki.ugfx.io
|
||||
#define CONF_WIZ_OS 1
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GOS - One of these must be defined, preferably in your Makefile //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//#define GFX_USE_OS_CHIBIOS FALSE
|
||||
//#define GFX_USE_OS_FREERTOS FALSE
|
||||
// #define GFX_FREERTOS_USE_TRACE FALSE
|
||||
//#define GFX_USE_OS_WIN32 FALSE
|
||||
//#define GFX_USE_OS_LINUX FALSE
|
||||
//#define GFX_USE_OS_OSX FALSE
|
||||
//#define GFX_USE_OS_ECOS FALSE
|
||||
//#define GFX_USE_OS_RAWRTOS TRUE
|
||||
//#define GFX_USE_OS_ARDUINO FALSE
|
||||
//#define GFX_USE_OS_KEIL TRUE
|
||||
//#define GFX_USE_OS_CMSIS FALSE
|
||||
//#define GFX_USE_OS_CMSIS2 FALSE
|
||||
#if CONF_WIZ_OS == 0
|
||||
#define GFX_USE_OS_RAW32 TRUE
|
||||
#define GFX_USE_OS_RTX5 FALSE
|
||||
#define GFX_OS_PRE_INIT_FUNCTION Raw32OSInit
|
||||
#define GFX_OS_INIT_NO_WARNING TRUE
|
||||
#else
|
||||
#define GFX_USE_OS_RAW32 FALSE
|
||||
#define GFX_USE_OS_RTX5 TRUE
|
||||
#define GFX_OS_INIT_NO_WARNING TRUE
|
||||
#endif
|
||||
//#define GFX_USE_OS_ZEPHYR FALSE
|
||||
//#define GFX_USE_OS_NIOS FALSE
|
||||
//#define GFX_USE_OS_QT FALSE
|
||||
// #define INTERRUPTS_OFF() optional_code
|
||||
// #define INTERRUPTS_ON() optional_code
|
||||
|
||||
// Options that (should where relevant) apply to all operating systems
|
||||
// #define GFX_NO_INLINE FALSE
|
||||
#define GFX_COMPILER GFX_COMPILER_KEIL
|
||||
// #define GFX_SHOW_COMPILER FALSE
|
||||
#define GFX_CPU GFX_CPU_CORTEX_M7
|
||||
// #define GFX_CPU_NO_ALIGNMENT_FAULTS FALSE
|
||||
// #define GFX_CPU_ENDIAN GFX_CPU_ENDIAN_UNKNOWN
|
||||
//<o> GFX heap size (in bytes), min. 32000
|
||||
|
||||
#define GFX_OS_HEAP_SIZE 32000
|
||||
#define GFX_OS_NO_INIT TRUE
|
||||
// #define GFX_OS_EXTRA_INIT_FUNCTION myOSInitRoutine
|
||||
// #define GFX_OS_EXTRA_DEINIT_FUNCTION myOSDeInitRoutine
|
||||
// #define GFX_OS_CALL_UGFXMAIN FALSE
|
||||
// #define GFX_OS_UGFXMAIN_STACKSIZE 0
|
||||
// #define GFX_EMULATE_MALLOC FALSE
|
||||
//<o> LCD orientartion <0=> Board orientation
|
||||
// <90=> 90 degree rotate
|
||||
// <180=> 180 degree rotate (default laboratory)
|
||||
// <270=> 270 degree rotate
|
||||
#define GDISP_DEFAULT_ORIENTATION 180 // If not defined the native hardware orientation is used.
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GDISP //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// <e> GDISP configuration
|
||||
#define GFX_USE_GDISP 1
|
||||
#define GDISP_NEED_CONTROL 1 // always because LCD is 180 degree
|
||||
//<q> Use of draw circle functions
|
||||
#define GDISP_NEED_CIRCLE 0
|
||||
//<q> Use of draw circle into circle
|
||||
#define GDISP_NEED_DUALCIRCLE 0
|
||||
//<q> Use of draw ellipse functions
|
||||
#define GDISP_NEED_ELLIPSE 0
|
||||
//<q> Use of draw arc functions
|
||||
#define GDISP_NEED_ARC 0
|
||||
//<q> Use of draw arc sectors functions
|
||||
#define GDISP_NEED_ARCSECTORS 0
|
||||
//<q> Use of draw convex polygon functions
|
||||
#define GDISP_NEED_CONVEX_POLYGON 0
|
||||
//<q> Use of scrolling functions
|
||||
#define GDISP_NEED_SCROLL 0
|
||||
//<q> Use of read pixel functions
|
||||
#define GDISP_NEED_PIXELREAD 0
|
||||
//#define GDISP_NEED_QUERY FALSE
|
||||
#define GDISP_NEED_MULTITHREAD 1
|
||||
//#define GDISP_NEED_STREAMING FALSE
|
||||
//#define GDISP_NEED_AUTOFLUSH FALSE
|
||||
//#define GDISP_NEED_TIMERFLUSH FALSE
|
||||
|
||||
//<q> Control LCD boundaries
|
||||
#define GDISP_NEED_VALIDATION 0
|
||||
#define GDISP_NEED_CLIP TRUE
|
||||
// <e> Text usage
|
||||
#define GDISP_NEED_TEXT 1
|
||||
|
||||
//<q> Text word wrap
|
||||
#define GDISP_NEED_TEXT_WORDWRAP 0
|
||||
// #define GDISP_NEED_TEXT_BOXPADLR 1
|
||||
// #define GDISP_NEED_TEXT_BOXPADTB 1
|
||||
//<q> Text antialiasing
|
||||
#define GDISP_NEED_ANTIALIAS 0
|
||||
//<q> Text UTF8
|
||||
#define GDISP_NEED_UTF8 1
|
||||
//<q> Text kerning
|
||||
#define GDISP_NEED_TEXT_KERNING 0
|
||||
|
||||
// <e> Fonts (use one at least)
|
||||
#define FOR_CONF_WIZARD 1
|
||||
//<q> Font ui1
|
||||
#define GDISP_INCLUDE_FONT_UI1 0
|
||||
//<q> Font ui2
|
||||
#define GDISP_INCLUDE_FONT_UI2 1 // The smallest preferred font.
|
||||
//<q> Font Largenumbers
|
||||
#define GDISP_INCLUDE_FONT_LARGENUMBERS 0
|
||||
//<q> Font DejaVuSans10
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS10 0
|
||||
//<q> Font DejaVuSans12
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS12 0
|
||||
//<q> Font DejaVuSans16
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS16 0
|
||||
//<q> Font DejaVuSans20
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS20 0
|
||||
//<q> Font DejaVuSans24
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS24 0
|
||||
//<q> Font DejaVuSans32
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS32 0
|
||||
//<q> Font DejaVuSansBold12
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 0
|
||||
//<q> Font Fixed_10x20
|
||||
#define GDISP_INCLUDE_FONT_FIXED_10X20 0
|
||||
//<q> Font Fixed_7x14
|
||||
#define GDISP_INCLUDE_FONT_FIXED_7X14 0
|
||||
//<q> Font Fixed_5x8
|
||||
#define GDISP_INCLUDE_FONT_FIXED_5X8 0
|
||||
//<q> Font DejaVuSans12_aa
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA 0
|
||||
//<q> Font DejaVuSans16_aa
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA 0
|
||||
//<q> Font DejaVuSans20_aa
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS20_AA 0
|
||||
//<q> Font Dejavusans24_aa
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA 0
|
||||
//<q> Font DejaVuSans32_aa
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA 0
|
||||
//<q> Font DejaVuSansBold12_aa
|
||||
#define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA 0
|
||||
//<q> Font user
|
||||
#define GDISP_INCLUDE_USER_FONTS 0
|
||||
// </e>
|
||||
// </e>
|
||||
// <e> Image usage
|
||||
#define GDISP_NEED_IMAGE 0
|
||||
// <e> Image bitmap (BMP)
|
||||
#define GDISP_NEED_IMAGE_BMP 0
|
||||
//<q> Bitmap 1 bit
|
||||
#define GDISP_NEED_IMAGE_BMP_1 0
|
||||
//<q> Bitmap 4 bits
|
||||
#define GDISP_NEED_IMAGE_BMP_4 0
|
||||
//<q> Bitmap 4 bits RLE compressed
|
||||
#define GDISP_NEED_IMAGE_BMP_4_RLE 0
|
||||
//<q> Bitmap 8 bits
|
||||
#define GDISP_NEED_IMAGE_BMP_8 0
|
||||
//<q> Bitmap 8 bits RLE compressed
|
||||
#define GDISP_NEED_IMAGE_BMP_8_RLE 0
|
||||
//<q> Bitmap 16 bits
|
||||
#define GDISP_NEED_IMAGE_BMP_16 0
|
||||
//<q> Bitmap 24 bits
|
||||
#define GDISP_NEED_IMAGE_BMP_24 0
|
||||
//<q> Bitmap 32 bits
|
||||
#define GDISP_NEED_IMAGE_BMP_32 0
|
||||
#define GDISP_IMAGE_BMP_BLIT_BUFFER_SIZE 32
|
||||
// </e>
|
||||
//<q> Image GIF
|
||||
#define GDISP_NEED_IMAGE_GIF 0
|
||||
#define GDISP_IMAGE_GIF_BLIT_BUFFER_SIZE 32
|
||||
//<q> Image JPG
|
||||
#define GDISP_NEED_IMAGE_JPG 0
|
||||
//<e> Image PNG
|
||||
#define GDISP_NEED_IMAGE_PNG 0
|
||||
//<q> PDG interlaced
|
||||
#define GDISP_NEED_IMAGE_PNG_INTERLACED 0
|
||||
//<q> PDG transparency
|
||||
#define GDISP_NEED_IMAGE_PNG_TRANSPARENCY 1
|
||||
//<q> PDG background
|
||||
#define GDISP_NEED_IMAGE_PNG_BACKGROUND 1
|
||||
// #define GDISP_NEED_IMAGE_PNG_ALPHACLIFF 32
|
||||
// #define GDISP_NEED_IMAGE_PNG_PALETTE_124 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_PALETTE_8 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYSCALE_124 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYSCALE_8 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYSCALE_16 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYALPHA_8 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_GRAYALPHA_16 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_RGB_8 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_RGB_16 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_RGBALPHA_8 TRUE
|
||||
// #define GDISP_NEED_IMAGE_PNG_RGBALPHA_16 TRUE
|
||||
// #define GDISP_IMAGE_PNG_BLIT_BUFFER_SIZE 32
|
||||
// #define GDISP_IMAGE_PNG_FILE_BUFFER_SIZE 8
|
||||
// #define GDISP_IMAGE_PNG_Z_BUFFER_SIZE 32768
|
||||
// </e>
|
||||
// #define GDISP_NEED_IMAGE_ACCOUNTING FALSE
|
||||
// #define GDISP_NEED_IMAGE_NATIVE FALSE
|
||||
|
||||
//#define GDISP_NEED_PIXMAP FALSE
|
||||
// #define GDISP_NEED_PIXMAP_IMAGE FALSE
|
||||
|
||||
//#define GDISP_LINEBUF_SIZE 128
|
||||
//#define GDISP_STARTUP_COLOR Black
|
||||
#define GDISP_NEED_STARTUP_LOGO FALSE
|
||||
|
||||
//#define GDISP_TOTAL_DISPLAYS 1
|
||||
|
||||
#define GDISP_DRIVER_LIST GDISPVMT_STM32LTDC
|
||||
// #ifdef GDISP_DRIVER_LIST
|
||||
// // For code and speed optimization define as TRUE or FALSE if all controllers have the same capability
|
||||
// #define GDISP_HARDWARE_STREAM_WRITE FALSE
|
||||
// #define GDISP_HARDWARE_STREAM_READ FALSE
|
||||
// #define GDISP_HARDWARE_STREAM_POS FALSE
|
||||
// #define GDISP_HARDWARE_DRAWPIXEL FALSE
|
||||
// #define GDISP_HARDWARE_CLEARS FALSE
|
||||
// #define GDISP_HARDWARE_FILLS FALSE
|
||||
// #define GDISP_HARDWARE_BITFILLS FALSE
|
||||
// #define GDISP_HARDWARE_SCROLL FALSE
|
||||
#define GDISP_HARDWARE_PIXELREAD GFXON
|
||||
// #define GDISP_HARDWARE_CONTROL FALSE
|
||||
// #define GDISP_HARDWARE_QUERY FALSE
|
||||
// #define GDISP_HARDWARE_CLIP FALSE
|
||||
|
||||
#define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_RGB565
|
||||
// #endif
|
||||
|
||||
//#define GDISP_USE_GFXNET FALSE
|
||||
// #define GDISP_GFXNET_PORT 13001
|
||||
// #define GDISP_GFXNET_CUSTOM_LWIP_STARTUP FALSE
|
||||
// #define GDISP_DONT_WAIT_FOR_NET_DISPLAY FALSE
|
||||
// #define GDISP_GFXNET_UNSAFE_SOCKETS FALSE
|
||||
//</e>
|
||||
// </e>
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GWIN //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// <e> GWIN configuration
|
||||
#define GFX_USE_GWIN 0
|
||||
// <e> Use windows manager
|
||||
#define GWIN_NEED_WINDOWMANAGER 1
|
||||
//<q> Redraw imadiate
|
||||
#define GWIN_REDRAW_IMMEDIATE 0
|
||||
//<q> Redraw all windows in single operation
|
||||
#define GWIN_REDRAW_SINGLEOP 1
|
||||
//<q> Flashing widget support
|
||||
#define GWIN_NEED_FLASHING 0
|
||||
//<o> Flashing period
|
||||
#define GWIN_FLASHING_PERIOD 250
|
||||
// </e>
|
||||
// <e> Console support
|
||||
#define GWIN_NEED_CONSOLE 0
|
||||
//<q> Console history
|
||||
#define GWIN_CONSOLE_HISTORY_ATCREATE 0
|
||||
// #define GWIN_CONSOLE_USE_HISTORY 0
|
||||
// #define GWIN_CONSOLE_HISTORY_AVERAGING FALSE
|
||||
//<q> Use escape command for coloring
|
||||
#define GWIN_CONSOLE_ESCSEQ 0
|
||||
// #define GWIN_CONSOLE_USE_BASESTREAM FALSE // chibios only
|
||||
//<q> Floating numbers support
|
||||
#define GWIN_CONSOLE_USE_FLOAT 0
|
||||
//</e>
|
||||
//#define GWIN_NEED_GRAPH FALSE
|
||||
//#define GWIN_NEED_GL3D FALSE
|
||||
//<q> Widget support
|
||||
#define GWIN_NEED_WIDGET 1
|
||||
//#define GWIN_FOCUS_HIGHLIGHT_WIDTH 1
|
||||
//<q> Label support
|
||||
#define GWIN_NEED_LABEL 0
|
||||
// #define GWIN_LABEL_ATTRIBUTE FALSE
|
||||
//<q> Button support
|
||||
#define GWIN_NEED_BUTTON 1
|
||||
// #define GWIN_BUTTON_LAZY_RELEASE FALSE
|
||||
//<q> Slider support
|
||||
#define GWIN_NEED_SLIDER 0
|
||||
// #define GWIN_SLIDER_NOSNAP FALSE
|
||||
// #define GWIN_SLIDER_DEAD_BAND 5
|
||||
// #define GWIN_SLIDER_TOGGLE_INC 20
|
||||
//<q> Checkbox support
|
||||
#define GWIN_NEED_CHECKBOX 0
|
||||
//<e> Image support
|
||||
#define GWIN_NEED_IMAGE 0
|
||||
//<q> Image animation support
|
||||
#define GWIN_NEED_IMAGE_ANIMATION 0
|
||||
//</e>
|
||||
//<q> Radio button support
|
||||
#define GWIN_NEED_RADIO 0
|
||||
//<e> List support
|
||||
#define GWIN_NEED_LIST 0
|
||||
//<q> List image support
|
||||
#define GWIN_NEED_LIST_IMAGES 0
|
||||
// </e>
|
||||
|
||||
//<q> Progressbar support
|
||||
#define GWIN_NEED_PROGRESSBAR 0
|
||||
// #define GWIN_PROGRESSBAR_AUTO FALSE
|
||||
//<q> Keyboard support
|
||||
#define GWIN_NEED_KEYBOARD 0
|
||||
// #define GWIN_KEYBOARD_DEFAULT_LAYOUT VirtualKeyboard_English1
|
||||
// #define GWIN_NEED_KEYBOARD_ENGLISH1 TRUE
|
||||
//<q> Text edit support
|
||||
#define GWIN_NEED_TEXTEDIT 0
|
||||
// #define GWIN_FLAT_STYLING FALSE
|
||||
//<q> Widgets tag support
|
||||
#define GWIN_WIDGET_TAGS 0
|
||||
//<q> Containers support
|
||||
#define GWIN_NEED_CONTAINERS 1
|
||||
//<q> Need container support
|
||||
#define GWIN_NEED_CONTAINER 1
|
||||
//<q> Frame support
|
||||
#define GWIN_NEED_FRAME 0
|
||||
//<q> Tabset support (see details)
|
||||
#define GWIN_NEED_TABSET 0
|
||||
// #define GWIN_TABSET_TABHEIGHT 18
|
||||
// </e>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GTRANS //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//#define GFX_USE_GTRANS FALSE
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GEVENT //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// <e> GEVENT configuration
|
||||
#define GFX_USE_GEVENT 0
|
||||
|
||||
//#define GEVENT_ASSERT_NO_RESOURCE FALSE
|
||||
//<o> Maximum size of an event (in bytes)
|
||||
#define GEVENT_MAXIMUM_SIZE 32
|
||||
//<o> Maximum Source/Listener pair
|
||||
#define GEVENT_MAX_SOURCE_LISTENERS 32
|
||||
|
||||
//</e>
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GTIMER //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GTIMER 1
|
||||
|
||||
#define GTIMER_THREAD_PRIORITY HIGH_PRIORITY
|
||||
#define GTIMER_THREAD_WORKAREA_SIZE 4096
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GQUEUE //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#define GFX_USE_GQUEUE TRUE
|
||||
|
||||
#define GQUEUE_NEED_ASYNC TRUE
|
||||
//#define GQUEUE_NEED_GSYNC FALSE
|
||||
//#define GQUEUE_NEED_FSYNC FALSE
|
||||
//#define GQUEUE_NEED_BUFFERS FALSE
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GINPUT //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// <e> GINPUT configuration
|
||||
#define GFX_USE_GINPUT 0
|
||||
|
||||
//<q> Mouse / touchscreen support
|
||||
#define GINPUT_NEED_MOUSE 0
|
||||
// #define GINPUT_TOUCH_STARTRAW FALSE
|
||||
|
||||
// #define GINPUT_TOUCH_NOTOUCH FALSE
|
||||
// #define GINPUT_TOUCH_NOCALIBRATE FALSE
|
||||
#define GINPUT_TOUCH_NOCALIBRATE_GUI TRUE
|
||||
// #define GINPUT_MOUSE_POLL_PERIOD 25
|
||||
// #define GINPUT_MOUSE_CLICK_TIME 300
|
||||
// #define GINPUT_TOUCH_CXTCLICK_TIME 700
|
||||
// #define GINPUT_TOUCH_USER_CALIBRATION_LOAD FALSE
|
||||
// #define GINPUT_TOUCH_USER_CALIBRATION_SAVE FALSE
|
||||
#define GMOUSE_DRIVER_LIST GMOUSEVMT_FT5336
|
||||
//<q> Keyboard support
|
||||
#define GINPUT_NEED_KEYBOARD 0
|
||||
// #define GINPUT_KEYBOARD_POLL_PERIOD 200
|
||||
// #define GKEYBOARD_DRIVER_LIST GKEYBOARDVMT_Win32, GKEYBOARDVMT_Win32
|
||||
// #define GKEYBOARD_LAYOUT_OFF FALSE
|
||||
// #define GKEYBOARD_LAYOUT_SCANCODE2_US FALSE
|
||||
//#define GINPUT_NEED_TOGGLE FALSE
|
||||
//#define GINPUT_NEED_DIAL FALSE
|
||||
//</e>
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GFILE //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// <e> GFILE configuration
|
||||
#define GFX_USE_GFILE 0
|
||||
// <e> String support
|
||||
#define GFILE_NEED_STRINGS 0
|
||||
//<q> printfg, fprintg, etc support
|
||||
#define GFILE_NEED_PRINTG 0
|
||||
//<q> scang, fscang, etc support
|
||||
#define GFILE_NEED_SCANG 0
|
||||
//</e>
|
||||
//#define GFILE_NEED_FILELISTS FALSE
|
||||
//#define GFILE_NEED_STDIO FALSE
|
||||
//#define GFILE_NEED_NOAUTOMOUNT FALSE
|
||||
//#define GFILE_NEED_NOAUTOSYNC FALSE
|
||||
|
||||
//#define GFILE_NEED_MEMFS FALSE
|
||||
//<q> ROM file system support
|
||||
#define GFILE_NEED_ROMFS 1
|
||||
//<q> RAM file system support
|
||||
#define GFILE_NEED_RAMFS 0
|
||||
//#define GFILE_NEED_FATFS FALSE
|
||||
//#define GFILE_NEED_NATIVEFS FALSE
|
||||
//#define GFILE_NEED_CHBIOSFS FALSE
|
||||
//#define GFILE_NEED_USERFS FALSE
|
||||
|
||||
//#define GFILE_ALLOW_FLOATS FALSE
|
||||
//#define GFILE_ALLOW_DEVICESPECIFIC FALSE
|
||||
//<o> Maximum number of files
|
||||
#define GFILE_MAX_GFILES 6
|
||||
//</e>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GADC //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//#define GFX_USE_GADC FALSE
|
||||
// #define GADC_MAX_LOWSPEED_DEVICES 4
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GAUDIO //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//#define GFX_USE_GAUDIO FALSE
|
||||
// #define GAUDIO_NEED_PLAY FALSE
|
||||
// #define GAUDIO_NEED_RECORD FALSE
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// GMISC //
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// <e> GMISC configuration (see details in file)
|
||||
#define GFX_USE_GMISC 0
|
||||
|
||||
//#define GMISC_NEED_ARRAYOPS FALSE
|
||||
//#define GMISC_NEED_FASTTRIG FALSE
|
||||
//#define GMISC_NEED_FIXEDTRIG FALSE
|
||||
//#define GMISC_NEED_INVSQRT FALSE
|
||||
// #define GMISC_INVSQRT_MIXED_ENDIAN FALSE
|
||||
// #define GMISC_INVSQRT_REAL_SLOW FALSE
|
||||
#define GMISC_NEED_MATRIXFLOAT2D 0
|
||||
//#define GMISC_NEED_MATRIXFIXED2D FALSE
|
||||
//#define GMISC_NEED_HITTEST_POLY FALSE
|
||||
// </e>
|
||||
//</h>
|
||||
|
||||
|
||||
#endif /* _GFXCONF_H */
|
@ -339,7 +339,7 @@
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
<IncludePath>.\RTE\uGFX_library</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
@ -394,7 +394,7 @@
|
||||
<GroupName>::CMSIS</GroupName>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::Hesso pack</GroupName>
|
||||
<GroupName>::CMSIS Driver</GroupName>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::Compiler</GroupName>
|
||||
@ -402,12 +402,24 @@
|
||||
<Group>
|
||||
<GroupName>::Device</GroupName>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::Hesso pack</GroupName>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::uGFX library</GroupName>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
<RTE>
|
||||
<apis>
|
||||
<api Capiversion="2.4.0" Cclass="CMSIS Driver" Cgroup="I2C" exclusive="0">
|
||||
<package name="CMSIS" schemaVersion="1.7.7" url="http://www.keil.com/pack/" vendor="ARM" version="5.9.0"/>
|
||||
<targetInfos>
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</api>
|
||||
<api Capiversion="2.1.3" Cclass="CMSIS" Cgroup="RTOS2" exclusive="1">
|
||||
<package name="CMSIS" schemaVersion="1.7.7" url="http://www.keil.com/pack/" vendor="ARM" version="5.9.0"/>
|
||||
<targetInfos>
|
||||
@ -446,6 +458,12 @@
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</component>
|
||||
<component Cclass="Hesso pack" Cgroup="Utilities" Csub="Clock" Cvendor="HessoValais" Cversion="1.0.0">
|
||||
<package name="Extension_board" schemaVersion="1.2" url="http://kpacks.hevs.ch/HessoValais.Extension_board.pdsc" vendor="HessoValais" version="1.2.0"/>
|
||||
<targetInfos>
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</component>
|
||||
<component Cbundle="ARM Compiler" Cclass="Compiler" Cgroup="Event Recorder" Cvariant="DAP" Cvendor="Keil" Cversion="1.5.1" condition="Cortex-M Device">
|
||||
<package name="ARM_Compiler" schemaVersion="1.7.7" url="https://www.keil.com/pack/" vendor="Keil" version="1.7.2"/>
|
||||
<targetInfos>
|
||||
@ -458,13 +476,13 @@
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</component>
|
||||
<component Capiversion="1.0.0" Cclass="Device" Cgroup="STM32Cube Framework" Csub="Classic" Cvendor="Keil" Cversion="1.2.7" condition="STM32F7 Framework Classic">
|
||||
<component Capiversion="2.2.0" Cclass="CMSIS Driver" Cgroup="I2C" Cvendor="Keil" Cversion="1.9.0" condition="STM32F7 CMSIS_Driver I2C">
|
||||
<package name="STM32F7xx_DFP" schemaVersion="1.6.0" url="http://www.keil.com/pack/" vendor="Keil" version="2.12.0"/>
|
||||
<targetInfos>
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</component>
|
||||
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="CRC" Cvendor="Keil" Cversion="1.2.7" condition="STM32F7 HAL">
|
||||
<component Capiversion="1.0.0" Cclass="Device" Cgroup="STM32Cube Framework" Csub="Classic" Cvendor="Keil" Cversion="1.2.7" condition="STM32F7 Framework Classic">
|
||||
<package name="STM32F7xx_DFP" schemaVersion="1.6.0" url="http://www.keil.com/pack/" vendor="Keil" version="2.12.0"/>
|
||||
<targetInfos>
|
||||
<targetInfo name="Target 1"/>
|
||||
@ -518,6 +536,12 @@
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</component>
|
||||
<component Cclass="uGFX library" Cgroup="uGFX library" Cvariant="osRTX5" Cvendor="uGFX" Cversion="2.0.0">
|
||||
<package name="uGFX_lib" schemaVersion="1.2" url="http://kpacks.hevs.ch/uGFX.uGFX_lib.pdsc" vendor="uGFX" version="2.0.0"/>
|
||||
<targetInfos>
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</component>
|
||||
</components>
|
||||
<files>
|
||||
<file attr="config" category="source" name="CMSIS\RTOS2\RTX\Config\RTX_Config.c" version="5.1.1">
|
||||
@ -576,6 +600,22 @@
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</file>
|
||||
<file attr="config" category="source" name="extension_board\clock_216.c">
|
||||
<instance index="0">RTE\Hesso_pack\clock_216.c</instance>
|
||||
<component Cclass="Hesso pack" Cgroup="Utilities" Csub="Clock" Cvendor="HessoValais" Cversion="1.0.0"/>
|
||||
<package name="Extension_board" schemaVersion="1.2" url="http://kpacks.hevs.ch/HessoValais.Extension_board.pdsc" vendor="HessoValais" version="1.2.0"/>
|
||||
<targetInfos>
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</file>
|
||||
<file attr="config" category="header" name="extension_board\clock_216.h">
|
||||
<instance index="0">RTE\Hesso_pack\clock_216.h</instance>
|
||||
<component Cclass="Hesso pack" Cgroup="Utilities" Csub="Clock" Cvendor="HessoValais" Cversion="1.0.0"/>
|
||||
<package name="Extension_board" schemaVersion="1.2" url="http://kpacks.hevs.ch/HessoValais.Extension_board.pdsc" vendor="HessoValais" version="1.2.0"/>
|
||||
<targetInfos>
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</file>
|
||||
<file attr="config" category="source" name="extension_board\ext_led.c" version="1.0.0">
|
||||
<instance index="0">RTE\Hesso_pack\ext_led.c</instance>
|
||||
<component Cclass="Hesso pack" Cgroup="Extension Board" Csub="LEDs" Cvendor="HessoValais" Cversion="1.0.0" condition="any"/>
|
||||
@ -608,16 +648,15 @@
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</file>
|
||||
<file Cversion="2.0.0" attr="config" category="source" name="ugfx\config\with_os\gfxconf.h" version="2.0.0">
|
||||
<instance index="0">RTE\uGFX_library\gfxconf.h</instance>
|
||||
<component Cclass="uGFX library" Cgroup="uGFX library" Cvariant="osRTX5" Cvendor="uGFX" Cversion="2.0.0"/>
|
||||
<package name="uGFX_lib" schemaVersion="1.2" url="http://kpacks.hevs.ch/uGFX.uGFX_lib.pdsc" vendor="uGFX" version="2.0.0"/>
|
||||
<targetInfos>
|
||||
<targetInfo name="Target 1"/>
|
||||
</targetInfos>
|
||||
</file>
|
||||
</files>
|
||||
</RTE>
|
||||
|
||||
<LayerInfo>
|
||||
<Layers>
|
||||
<Layer>
|
||||
<LayName>lab04-queue</LayName>
|
||||
<LayPrjMark>1</LayPrjMark>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</LayerInfo>
|
||||
|
||||
</Project>
|
||||
|
160
main.c
160
main.c
@ -5,6 +5,10 @@
|
||||
#include "RTE_Components.h"
|
||||
#include CMSIS_device_header
|
||||
#include "cmsis_os2.h"
|
||||
#include "ext_led.h"
|
||||
#include "ext_uart.h"
|
||||
#include "ext_buttons.h"
|
||||
#include "ext_keyboard.h"
|
||||
#include "string.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -13,137 +17,62 @@
|
||||
#include "EventRecorder.h"
|
||||
#endif
|
||||
|
||||
CRC_HandleTypeDef hcrc;
|
||||
static void MX_CRC_Init(void);
|
||||
|
||||
osThreadId_t thread1,thread2;
|
||||
osMessageQueueId_t pipe1, pipe2;
|
||||
osSemaphoreId_t mutexCRC;
|
||||
osMessageQueueId_t msgQueue;
|
||||
|
||||
const osThreadAttr_t thread1_attr = {
|
||||
.stack_size = 1024, // Create the thread stack size
|
||||
.priority = osPriorityNormal, //Set initial thread priority to high
|
||||
.name = "Task2",
|
||||
.name = "Producer",
|
||||
};
|
||||
const osThreadAttr_t thread2_attr = {
|
||||
.stack_size = 1024, // Create the thread stack size
|
||||
.priority = osPriorityNormal, //Set initial thread priority to high
|
||||
.name = "Task2",
|
||||
.name = "Consumer",
|
||||
};
|
||||
|
||||
const osMessageQueueAttr_t pipe1_attr = {
|
||||
.name = "Pipe1",
|
||||
};
|
||||
|
||||
const osMessageQueueAttr_t pipe2_attr = {
|
||||
.name = "Pipe2",
|
||||
};
|
||||
const osSemaphoreAttr_t mutexCRC_attr = {
|
||||
.name = "MTX_CRC", // name of the semaphore
|
||||
const osMessageQueueAttr_t msgQueue_attr = {
|
||||
.name = "MsgQueue",
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Setup system clock to 216MHz
|
||||
//------------------------------------------------------------------------------
|
||||
void SystemClock_Config (void) {
|
||||
RCC_ClkInitTypeDef RCC_ClkInitStruct;
|
||||
RCC_OscInitTypeDef RCC_OscInitStruct;
|
||||
|
||||
/* Enable HSE Oscillator and activate PLL with HSE as source */
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
||||
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
||||
RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
|
||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
||||
RCC_OscInitStruct.PLL.PLLM = 25;
|
||||
RCC_OscInitStruct.PLL.PLLN = 432;
|
||||
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
||||
RCC_OscInitStruct.PLL.PLLQ = 9;
|
||||
HAL_RCC_OscConfig(&RCC_OscInitStruct);
|
||||
|
||||
/* Activate the OverDrive to reach the 216 MHz Frequency */
|
||||
HAL_PWREx_EnableOverDrive();
|
||||
|
||||
/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
|
||||
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
|
||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
|
||||
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
|
||||
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static void MX_CRC_Init(void) {
|
||||
__HAL_RCC_CRC_CLK_ENABLE();
|
||||
hcrc.Instance = CRC;
|
||||
hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE;
|
||||
hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE;
|
||||
hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE;
|
||||
hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE;
|
||||
hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_WORDS;
|
||||
if (HAL_CRC_Init(&hcrc) != HAL_OK) //Error_Handler();
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
* Thread Task1
|
||||
* Thread Producer
|
||||
*---------------------------------------------------------------------------*/
|
||||
__NO_RETURN static void Task1(void *argument) {
|
||||
uint32_t msg[]={1234,5678,41234,4356,122457,8562,45772,245735};
|
||||
|
||||
uint32_t crc;
|
||||
osSemaphoreAcquire(mutexCRC, osWaitForever);
|
||||
//MX_CRC_Init();
|
||||
crc = HAL_CRC_Calculate(&hcrc, msg, 8); // TODO: CRC module init
|
||||
osSemaphoreRelease(mutexCRC);
|
||||
__NO_RETURN static void Thread_Producer (void *argument) {
|
||||
osMessageQueueId_t* queue = (osMessageQueueId_t*)argument;
|
||||
uint32_t counter = 0;
|
||||
|
||||
for(;;) {
|
||||
// TODO: post 8 values and wait for the CRC back from Task 2
|
||||
osStatus_t status;
|
||||
|
||||
while(1) {
|
||||
for(uint8_t i = 0; i < 8;) {
|
||||
status = osMessageQueuePut(pipe1, &(msg[i]), 1, 0);
|
||||
if(status == osOK) i++;
|
||||
osDelay(500);
|
||||
osStatus_t statusQueue = osMessageQueuePut(*queue, &counter, 1, 0);
|
||||
if(statusQueue != osOK) {
|
||||
// TODO generate error
|
||||
}
|
||||
uint32_t recData;
|
||||
counter++;
|
||||
osDelay(100);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
* Thread Consumer
|
||||
*---------------------------------------------------------------------------*/
|
||||
__NO_RETURN static void Thread_Consumer (void *argument) {
|
||||
osMessageQueueId_t* queue = (osMessageQueueId_t*)argument;
|
||||
uint8_t counter = 1;
|
||||
|
||||
for(;;) {
|
||||
uint32_t msg;
|
||||
osStatus_t statusQueue;
|
||||
|
||||
do {
|
||||
status = osMessageQueueGet(pipe2, &recData, NULL, 0);
|
||||
} while(status != osOK);
|
||||
if(recData == crc) {
|
||||
printf("CRC OK: %d\r\n", crc);
|
||||
} else {
|
||||
printf("Error ! crc = %d, and should be: %d\r\n", recData, crc);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
* Thread Task2
|
||||
*---------------------------------------------------------------------------*/
|
||||
__NO_RETURN static void Task2(void *argument) {
|
||||
uint32_t crc;
|
||||
uint32_t recData;
|
||||
|
||||
for (;;) {
|
||||
osSemaphoreAcquire(mutexCRC, osWaitForever);
|
||||
MX_CRC_Init();
|
||||
for(uint8_t i = 0; i < 8; i++) {
|
||||
osMessageQueueGet(pipe1, &recData, NULL, osWaitForever);
|
||||
crc = HAL_CRC_Accumulate(&hcrc, &recData, 1);
|
||||
}
|
||||
osSemaphoreRelease(mutexCRC);
|
||||
osMessageQueuePut(pipe2, &crc, 1, osWaitForever);
|
||||
statusQueue = osMessageQueueGet(*queue, &msg, NULL, 0);
|
||||
if(statusQueue == osOK) printf("Value is %d\r\n", msg);
|
||||
} while(statusQueue != osErrorResource);
|
||||
if(++counter > 10) counter = 1;
|
||||
osDelay(counter*100);
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,22 +88,17 @@ int main (void) {
|
||||
EventRecorderInitialize(EventRecordAll, 1U);
|
||||
#endif
|
||||
|
||||
MX_CRC_Init();
|
||||
osKernelInitialize(); // Initialize CMSIS-RTOS
|
||||
pipe1 = osMessageQueueNew(8, 4, &pipe1_attr);
|
||||
pipe2 = osMessageQueueNew(8, 4, &pipe2_attr);
|
||||
thread1 = osThreadNew(Task1, (void*)1, &thread1_attr);
|
||||
thread2 = osThreadNew(Task2, (void*)2, &thread2_attr);
|
||||
mutexCRC= osSemaphoreNew(1,1,&mutexCRC_attr);
|
||||
msgQueue = osMessageQueueNew(8, 4, &msgQueue_attr);
|
||||
thread1 = osThreadNew(Thread_Producer, &msgQueue, &thread1_attr);
|
||||
thread2 = osThreadNew(Thread_Consumer, &msgQueue, &thread2_attr);
|
||||
|
||||
//----------------------------------------------------------------------------------------------
|
||||
// get names are placed for TraceAlyzer visualisation
|
||||
//----------------------------------------------------------------------------------------------
|
||||
osThreadGetName(thread1);
|
||||
osThreadGetName(thread2);
|
||||
osMessageQueueGetName(pipe1);
|
||||
osMessageQueueGetName(pipe2);
|
||||
osSemaphoreGetName(mutexCRC);
|
||||
osMessageQueueGetName(msgQueue);
|
||||
osKernelStart(); // Start thread execution
|
||||
for (;;) {}
|
||||
}
|
||||
|
Reference in New Issue
Block a user