2023-04-22 17:51:49 +08:00

196 lines
5.6 KiB
C

/****************************************************************************
* Copyright 2021 Gorgon Meducer (Email:embedded_zhuoran@hotmail.com) *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* *
****************************************************************************/
/*============================ INCLUDES ======================================*/
#include "pico/stdlib.h"
#include "perf_counter.h"
#if defined(__PICO_USE_LCD_1IN3__) && __PICO_USE_LCD_1IN3__
#include "DEV_Config.h"
#include "LCD_1In3.h"
#include "GLCD_Config.h"
#endif
#include <stdio.h>
#include "RTE_Components.h"
#if defined(RTE_Compiler_EventRecorder) && defined(RTE_Compiler_IO_STDOUT_EVR)
# include <EventRecorder.h>
#endif
#if defined(RTE_Script_PikaScript) || defined(USING_PIKAPYTHON)
# include "pikaScript.h"
#endif
#if defined(__RTE_ACCELERATION_ARM_2D__) || defined(RTE_Acceleration_Arm_2D)
# include "arm_2d.h"
# include "arm_2d_helper.h"
# include "arm_2d_disp_adapters.h"
# include "arm_2d_scenes.h"
#endif
#if defined(__RTE_ACCELERATION_ARM_2D_EXTRA_BENCHMARK_WATCH_PANEL__) \
|| defined(__RTE_ACCELERATION_ARM_2D_EXTRA_BENCHMARK_GENERIC__)
# include "arm_2d_benchmark.h"
#endif
/*============================ MACROS ========================================*/
#define TOP (0x1FFF)
/*============================ MACROFIED FUNCTIONS ===========================*/
#ifndef ABS
# define ABS(__N) ((__N) < 0 ? -(__N) : (__N))
#endif
#ifndef _BV
# define _BV(__N) ((uint32_t)1<<(__N))
#endif
/*============================ TYPES =========================================*/
/*============================ GLOBAL VARIABLES ==============================*/
/*============================ LOCAL VARIABLES ===============================*/
/*============================ PROTOTYPES ====================================*/
/*============================ IMPLEMENTATION ================================*/
void SysTick_Handler(void)
{
}
/*! \brief set the 16-level led gradation
*! \param hwLevel gradation
*! \return none
*/
static void set_led_gradation(uint16_t hwLevel)
{
static uint16_t s_hwCounter = 0;
if (hwLevel >= s_hwCounter) {
gpio_put(PICO_DEFAULT_LED_PIN, 1);
} else {
gpio_put(PICO_DEFAULT_LED_PIN, 0);
}
s_hwCounter++;
s_hwCounter &= TOP;
}
static void breath_led(void)
{
static uint16_t s_hwCounter = 0;
static int16_t s_nGray = (TOP >> 1);
s_hwCounter++;
if (!(s_hwCounter & (_BV(10)-1))) {
s_nGray++;
if (s_nGray == TOP) {
s_nGray = 0;
}
}
set_led_gradation(ABS(s_nGray - (TOP >> 1)));
}
static void system_init(void)
{
extern void SystemCoreClockUpdate();
SystemCoreClockUpdate();
/*! \note if you do want to use SysTick in your application, please use
*! init_cycle_counter(true);
*! instead of
*! init_cycle_counter(false);
*/
init_cycle_counter(false);
#if defined(RTE_Compiler_EventRecorder) && defined(RTE_Compiler_IO_STDOUT_EVR)
EventRecorderInitialize(0, 1);
#endif
stdio_init_all();
gpio_init(PICO_DEFAULT_LED_PIN);
gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
#if defined(__PICO_USE_LCD_1IN3__) && __PICO_USE_LCD_1IN3__
DEV_Delay_ms(100);
if(DEV_Module_Init()!=0){
//assert(0);
}
DEV_SET_PWM(50);
/* LCD Init */
LCD_1IN3_Init(HORIZONTAL);
LCD_1IN3_Clear(GLCD_COLOR_BLUE);
for (int n = 0; n < KEY_NUM; n++) {
dev_key_init(n);
}
#endif
}
int stdin_getchar(void);
char pika_platform_getchar(void) {
return stdin_getchar();
}
int main(void)
{
system_init();
__cycleof__("printf") {
printf("Hello Pico-Template\r\n");
}
#if defined(RTE_Script_PikaScript) || defined(USING_PIKAPYTHON)
pikaScriptInit();
#endif
#if defined( __PERF_COUNTER_COREMARK__ ) && __PERF_COUNTER_COREMARK__
printf("\r\nRun Coremark 1.0...\r\n");
coremark_main();
#endif
#if defined(__RTE_ACCELERATION_ARM_2D_EXTRA_BENCHMARK_WATCH_PANEL__) \
|| defined(__RTE_ACCELERATION_ARM_2D_EXTRA_BENCHMARK_GENERIC__)
arm_2d_run_benchmark();
#endif
#if defined(__RTE_ACCELERATION_ARM_2D__) || defined(RTE_Acceleration_Arm_2D)
arm_2d_init();
disp_adapter0_init();
//arm_2d_scene_player_switch_to_next_scene(&DISP0_ADAPTER);
#endif
while (true) {
breath_led();
#if defined(__RTE_ACCELERATION_ARM_2D__) || defined(RTE_Acceleration_Arm_2D)
disp_adapter0_task();
#endif
//gpio_put(PICO_DEFAULT_LED_PIN, 1);
//sleep_ms(500);
//gpio_put(PICO_DEFAULT_LED_PIN, 0);
//sleep_ms(500);
}
//return 0;
}