2020TPC-SW/2020TPCAppNoDFU.cydsn/main_cm4.c
2025-02-01 19:52:04 -06:00

107 lines
No EOL
3 KiB
C

/** \file
* \brief This file provides the entry point for the application running on the Cortex-M4 core.
*
* ## CapSense
* To tune the CapSense buttons, do the following:
* 1. Define `TUNE_CAPSENSE` below.
* 2. Rebuild the project, and load it on to your board.
* 3. Right-click on the `CapSense` component on the "CapSense" schematic page in `TopDesign.cysch`, and choose "Launch Tuner".
* 4. Follow the instructions in [AN85951 - PSoC® 4 and PSoC® 6 MCU CapSense® Design Guide](https://www.cypress.com/documentation/application-notes/an85951-psoc-4-and-psoc-6-mcu-capsense-design-guide) to complete the tuning.
*
*/
/* Include Files */
#include "KTag.h"
// See the instructions at the top of this file for how to tune CapSense--this is only part of what you need.
//#define TUNE_CAPSENSE
#ifndef TUNE_CAPSENSE
int main()
{
CONFIG_InitTasks();
/* Enable global interrupts. */
__enable_irq();
COMM_InitIPCMessages();
CONFIG_RunTasks();
}
#endif // TUNE_CAPSENSE
void vApplicationIdleHook(void)
{
CyDelay(500);
}
void vApplicationStackOverflowHook( TaskHandle_t pxTask, char *pcTaskName )
{
/* Halt the CPU */
CY_ASSERT(0);
}
void vApplicationMallocFailedHook( void )
{
/* Halt the CPU */
CY_ASSERT(0);
}
#ifdef TUNE_CAPSENSE
int main()
{
uint8 header[] = {0x0Du, 0x0Au};
uint8 tail[] = {0x00u, 0xFFu, 0xFFu};
__enable_irq(); /* Enable global interrupts. */
UART_Console_Start(); /* Start UART SCB Component */
CapSense_Start(); /* Initialize Component */
CapSense_ScanAllWidgets(); /* Scan all widgets */
for(;;)
{
/* Do this only when a scan is done */
if(CapSense_NOT_BUSY == CapSense_IsBusy())
{
CapSense_ProcessAllWidgets(); /* Process all widgets */
/* Send packet header */
UART_Console_PutArrayBlocking((uint8 *)(&header), sizeof(header));
/* Send packet with CapSense data */
UART_Console_PutArrayBlocking((uint8 *)(&CapSense_dsRam), sizeof(CapSense_dsRam));
/* Send packet tail */
UART_Console_PutArrayBlocking((uint8 *)(&tail), sizeof(tail));
CapSense_ScanAllWidgets(); /* Start next scan */
}
}
}
#endif // TUNE_CAPSENSE
void vApplicationGetIdleTaskMemory(StaticTask_t** ppxIdleTaskTCBBuffer, StackType_t** ppxIdleTaskStackBuffer, uint32_t* pulIdleTaskStackSize)
{
static StaticTask_t xIdleTaskTCB;
static StackType_t uxIdleTaskStack[configMINIMAL_STACK_SIZE];
*ppxIdleTaskTCBBuffer = &xIdleTaskTCB;
*ppxIdleTaskStackBuffer = uxIdleTaskStack;
*pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
}
void vApplicationGetTimerTaskMemory(StaticTask_t** ppxTimerTaskTCBBuffer, StackType_t** ppxTimerTaskStackBuffer, uint32_t* pulTimerTaskStackSize)
{
static StaticTask_t xTimerTaskTCB;
static StackType_t uxTimerTaskStack[configTIMER_TASK_STACK_DEPTH];
*ppxTimerTaskTCBBuffer = &xTimerTaskTCB;
*ppxTimerTaskStackBuffer = uxTimerTaskStack;
*pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
}