commit 56b104b14bf7ae94b19d79090836c65358eaec58 Author: Yilin Sun Date: Sat Aug 12 14:39:55 2023 +0800 Initial commit. Signed-off-by: Yilin Sun diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..214adf0 --- /dev/null +++ b/.clang-format @@ -0,0 +1,12 @@ +BasedOnStyle: Google +IndentWidth: 4 +AlignConsecutiveMacros: Consecutive +AlignConsecutiveDeclarations: Consecutive +AlignConsecutiveAssignments: Consecutive +AllowShortFunctionsOnASingleLine: None +BreakBeforeBraces: Custom +BraceWrapping: + AfterEnum: false + AfterStruct: false + SplitEmptyFunction: false +ColumnLimit: 120 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2da6168 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/cmake-build-* +/build +/board/*.bak +/.vscode + diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b73335e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "SDK"] + path = SDK + url = git@git.minori.work:Embedded_SDK/Air001_SDK.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..90c17a2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,132 @@ +cmake_minimum_required(VERSION 3.10) + +project(air001_template) + +enable_language(CXX) +enable_language(ASM) + +# Different linker scripts +set(TARGET_LDSCRIPT_FLASH "${CMAKE_SOURCE_DIR}/SDK/Drivers/CMSIS/Device/PY32F0xx/Source/gcc/py32f030x6_flash.ld") + +set(TARGET_SOURCES + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_adc.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_adc_ex.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_comp.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_cortex.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_crc.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_dma.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_exti.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_flash.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_gpio.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_i2c.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_irda.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_iwdg.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_led.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_lptim.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_pwr.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rcc.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rcc_ex.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rtc.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_rtc_ex.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_spi.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_tim.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_tim_ex.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_uart.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_usart.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_hal_wwdg.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_adc.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_comp.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_crc.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_dma.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_exti.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_gpio.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_i2c.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_led.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_lptim.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_pwr.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_rcc.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_rtc.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_spi.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_tim.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_usart.c" + "SDK/Drivers/PY32F0xx_HAL_Driver/Src/py32f0xx_ll_utils.c" + "SDK/Drivers/CMSIS/Device/PY32F0xx/Source/gcc/startup_py32f030x6.s" + "SDK/Drivers/CMSIS/Device/PY32F0xx/Source/system_py32f0xx.c" + "src/py32f0xx_hal_msp.c" + "src/py32f0xx_it.c" + "src/app_syscalls.c" + "src/main.c" +) + +set(TARGET_C_DEFINES + "PY32F030x6" +) + +set(TARGET_C_INCLUDES + "SDK/Drivers/PY32F0xx_HAL_Driver/Inc" + "SDK/Drivers/CMSIS/Include" + "SDK/Drivers/CMSIS/Device/PY32F0xx/Include" + "include" +) + +# Shared libraries linked with application +set(TARGET_LIBS + "c" + "m" + "nosys" +) + +# Shared library and linker script search paths +set(TARGET_LIB_DIRECTORIES +) + +# Conditional flags +# DEBUG +set(CMAKE_C_FLAGS_DEBUG "-DDEBUG -O0 -g") +set(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -O0 -g") +set(CMAKE_ASM_FLAGS_DEBUG "-DDEBUG -O0 -g") + +# RELEASE +set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2 -flto") +set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O2 -flto") +set(CMAKE_ASM_FLAGS_RELEASE "-DNDEBUG -O2 -flto") +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-flto") + +# Final compiler flags +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fno-common -fno-builtin -ffreestanding -fdata-sections -ffunction-sections") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fno-common -fno-builtin -ffreestanding -fdata-sections -ffunction-sections") +set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections") + +# Shared sources, includes and definitions +add_compile_definitions(${TARGET_C_DEFINES}) +include_directories(${TARGET_C_INCLUDES}) +link_directories(${TARGET_LIB_DIRECTORIES}) +link_libraries(${TARGET_LIBS}) + +# Main targets are added here + +# Create ELF +add_executable("${CMAKE_PROJECT_NAME}_FLASH.elf" ${TARGET_SOURCES}) +target_compile_definitions("${CMAKE_PROJECT_NAME}_FLASH.elf" + PRIVATE ${TARGET_C_DEFINES_XIP} + ) +target_link_options("${CMAKE_PROJECT_NAME}_FLASH.elf" + PRIVATE "-T${TARGET_LDSCRIPT_FLASH}" + PRIVATE "-Wl,--Map=${CMAKE_PROJECT_NAME}_FLASH.map" + ) +set_property(TARGET "${CMAKE_PROJECT_NAME}_FLASH.elf" APPEND + PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_PROJECT_NAME}_FLASH.map" + ) +add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_FLASH.hex" + COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_FLASH.elf" "${CMAKE_PROJECT_NAME}_FLASH.hex" + DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.elf" + ) +add_custom_target("${CMAKE_PROJECT_NAME}_FLASH_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.hex") +if(DEFINED TARGET_TOOLCHAIN_SIZE) + add_custom_command(TARGET "${CMAKE_PROJECT_NAME}_FLASH.elf" POST_BUILD + COMMAND ${TARGET_TOOLCHAIN_SIZE} "${CMAKE_PROJECT_NAME}_FLASH.elf" + ) +endif() + diff --git a/SDK b/SDK new file mode 160000 index 0000000..c87caf2 --- /dev/null +++ b/SDK @@ -0,0 +1 @@ +Subproject commit c87caf25cde7c3b2deb90f15896d6cb52dba0989 diff --git a/arm-none-eabi.cmake b/arm-none-eabi.cmake new file mode 100644 index 0000000..2b68248 --- /dev/null +++ b/arm-none-eabi.cmake @@ -0,0 +1,17 @@ +# Poor old Windows... +if(WIN32) + set(CMAKE_SYSTEM_NAME "Generic") +endif() + +set(CMAKE_C_COMPILER arm-none-eabi-gcc) +set(CMAKE_CXX_COMPILER arm-none-eabi-g++) + +# Optionally set size binary name, for elf section size reporting. +set(TARGET_TOOLCHAIN_SIZE arm-none-eabi-size) + +set(CMAKE_C_FLAGS_INIT "-mcpu=cortex-m0plus -mthumb -mfloat-abi=soft") +set(CMAKE_CXX_FLAGS_INIT "-mcpu=cortex-m0plus -mthumb -mfloat-abi=soft") +set(CMAKE_EXE_LINKER_FLAGS_INIT "-specs=nano.specs -specs=nosys.specs -Wl,--print-memory-usage -Wl,--no-warn-rwx-segments") + +# Make CMake happy about those compilers +set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") diff --git a/include/.gitkeep b/include/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/include/app_syscalls.h b/include/app_syscalls.h new file mode 100644 index 0000000..8bdba6b --- /dev/null +++ b/include/app_syscalls.h @@ -0,0 +1,6 @@ +#ifndef APP_SYSCALLS_H +#define APP_SYSCALLS_H + +void app_syscalls_init(void); + +#endif // APP_SYSCALLS_H diff --git a/include/main.h b/include/main.h new file mode 100644 index 0000000..b6dd658 --- /dev/null +++ b/include/main.h @@ -0,0 +1,8 @@ +#ifndef MAIN_H +#define MAIN_H + +#include "py32f0xx_hal.h" + +extern UART_HandleTypeDef huart1; + +#endif // MAIN_H diff --git a/include/py32f0xx_hal_conf.h b/include/py32f0xx_hal_conf.h new file mode 100644 index 0000000..ccbaa66 --- /dev/null +++ b/include/py32f0xx_hal_conf.h @@ -0,0 +1,236 @@ +/** +****************************************************************************** +* @file py32f0xx_hal_conf.h +* @author MCU Application Team +* @brief HAL configuration file. +****************************************************************************** +* @attention +* +*

© Copyright (c) Puya Semiconductor Co. +* All rights reserved.

+* +*

© Copyright (c) 2016 STMicroelectronics. +* All rights reserved.

+* +* This software component is licensed by ST under BSD 3-Clause license, +* the "License"; You may not use this file except in compliance with the +* License. You may obtain a copy of the License at: +* opensource.org/licenses/BSD-3-Clause +* +****************************************************************************** +*/ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __PY32F0xx_HAL_CONF_H +#define __PY32F0xx_HAL_CONF_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** +* @brief This is the list of modules to be used in the HAL driver +*/ +#define HAL_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +//#define HAL_ADC_MODULE_ENABLED +//#define HAL_CRC_MODULE_ENABLED +//#define HAL_COMP_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_GPIO_MODULE_ENABLED +//#define HAL_IWDG_MODULE_ENABLED +//#define HAL_WWDG_MODULE_ENABLED +//#define HAL_TIM_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +//#define HAL_LPTIM_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +//#define HAL_I2C_MODULE_ENABLED +#define HAL_UART_MODULE_ENABLED +//#define HAL_SPI_MODULE_ENABLED +//#define HAL_RTC_MODULE_ENABLED +//#define HAL_LED_MODULE_ENABLED +//#define HAL_EXTI_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED +/* ########################## Oscillator Values adaptation ####################*/ + +#if !defined (HSI_VALUE) +#define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz */ +#endif /* HSI_VALUE */ + +/** +* @brief Adjust the value of External High Speed oscillator (HSE) used in your application. +* This value is used by the RCC HAL module to compute the system frequency +*/ +#if !defined (HSE_VALUE) +#define HSE_VALUE ((uint32_t)24000000) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) +#define HSE_STARTUP_TIMEOUT ((uint32_t)200) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** +* @brief Internal Low Speed Internal oscillator (LSI) value. +*/ +#if !defined (LSI_VALUE) +#define LSI_VALUE ((uint32_t)32768) /*!< LSI Typical Value in Hz */ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature. */ + +/** +* @brief Adjust the value of External Low Speed oscillator (LSE) used in your application. +* This value is used by the RCC HAL module to compute the system frequency +*/ +#if !defined (LSE_VALUE) +#define LSE_VALUE ((uint32_t)32768) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + + + +#if !defined (LSE_STARTUP_TIMEOUT) +#define LSE_STARTUP_TIMEOUT ((uint32_t)5000) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** +* @brief This is the HAL system configuration section +*/ +#define VDD_VALUE ((uint32_t)3300) /*!< Value of VDD in mv */ +#define PRIORITY_HIGHEST 0 +#define PRIORITY_HIGH 1 +#define PRIORITY_LOW 2 +#define PRIORITY_LOWEST 3 +#define TICK_INT_PRIORITY ((uint32_t)PRIORITY_LOWEST) /*!< tick interrupt priority (lowest by default) */ +#define USE_RTOS 0 +#define PREFETCH_ENABLE 0 + +/* ########################## Assert Selection ############################## */ +/** +* @brief Uncomment the line below to expanse the "assert_param" macro in the +* HAL drivers code +*/ +/* #define USE_FULL_ASSERT 1U */ + + +/* Includes ------------------------------------------------------------------*/ +/** +* @brief Include module's header file +*/ + + +#ifdef HAL_MODULE_ENABLED +#include "py32f0xx_hal.h" +#endif /* HAL_MODULE_ENABLED */ + +#ifdef HAL_RCC_MODULE_ENABLED +#include "py32f0xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED +#include "py32f0xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED +#include "py32f0xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED +#include "py32f0xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED +#include "py32f0xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED +#include "py32f0xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED +#include "py32f0xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_COMP_MODULE_ENABLED +#include "py32f0xx_hal_comp.h" +#endif /* HAL_COMP_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED +#include "py32f0xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED +#include "py32f0xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED +#include "py32f0xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED +#include "py32f0xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED +#include "py32f0xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED +#include "py32f0xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED +#include "py32f0xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED +#include "py32f0xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED +#include "py32f0xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED +#include "py32f0xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_LED_MODULE_ENABLED +#include "py32f0xx_hal_led.h" +#endif /* HAL_LED_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED +#include "py32f0xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** +* @brief The assert_param macro is used for function's parameters check. +* @param expr: If expr is false, it calls assert_failed function +* which reports the name of the source file and the source +* line number of the call that failed. +* If expr is true, it returns no value. +* @retval None +*/ +#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ +void assert_failed(uint8_t* file, uint32_t line); +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __PY32F0xx_HAL_CONF_H */ + +/************************ (C) COPYRIGHT Puya *****END OF FILE******************/ diff --git a/include/py32f0xx_it.h b/include/py32f0xx_it.h new file mode 100644 index 0000000..ed352e2 --- /dev/null +++ b/include/py32f0xx_it.h @@ -0,0 +1,51 @@ +/** + ****************************************************************************** + * @file py32f0xx_it.h + * @author MCU Application Team + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + *

© Copyright (c) Puya Semiconductor Co. + * All rights reserved.

+ * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __PY32F0XX_IT_H +#define __PY32F0XX_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void SVC_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); + +void USART1_IRQHandler(void); +void USART2_IRQHandler(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __PY32F0XX_IT_H */ + +/************************ (C) COPYRIGHT Puya *****END OF FILE******************/ diff --git a/src/app_syscalls.c b/src/app_syscalls.c new file mode 100644 index 0000000..8246fb4 --- /dev/null +++ b/src/app_syscalls.c @@ -0,0 +1,12 @@ +#include "main.h" + +void app_syscalls_init(void) { + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + HAL_UART_Init(&huart1); +} \ No newline at end of file diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..a08acee --- /dev/null +++ b/src/main.c @@ -0,0 +1,19 @@ +#include + +/* App */ +#include "app_syscalls.h" +#include "main.h" + +UART_HandleTypeDef huart1; + +int main(void) { + HAL_Init(); + + app_syscalls_init(); + + printf("Hello world.\r\n"); + + for (;;) { + /* -- */ + } +} \ No newline at end of file diff --git a/src/py32f0xx_hal_msp.c b/src/py32f0xx_hal_msp.c new file mode 100644 index 0000000..1e8afee --- /dev/null +++ b/src/py32f0xx_hal_msp.c @@ -0,0 +1,69 @@ +/** + ****************************************************************************** + * @file py32f0xx_hal_msp.c + * @author MCU Application Team + * @brief This file provides code for the MSP Initialization + * and de-Initialization codes. + ****************************************************************************** + * @attention + * + *

© Copyright (c) Puya Semiconductor Co. + * All rights reserved.

+ * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* External functions --------------------------------------------------------*/ + +/** + * @brief 初始化全局MSP + */ +void HAL_MspInit(void) +{ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); +} + +/** + * @brief 初始化USART的MSP + */ +void HAL_UART_MspInit(UART_HandleTypeDef *huart) +{ + /* 使能时钟 */ + __HAL_RCC_USART2_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + + /**USART2引脚配置 + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + GPIO_InitTypeDef GPIO_InitStruct; + GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF4_USART2; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* 使能NVIC */ + HAL_NVIC_SetPriority(USART2_IRQn, 0, 1); + HAL_NVIC_EnableIRQ(USART2_IRQn); +} + +/************************ (C) COPYRIGHT Puya *****END OF FILE******************/ diff --git a/src/py32f0xx_it.c b/src/py32f0xx_it.c new file mode 100644 index 0000000..f81aec9 --- /dev/null +++ b/src/py32f0xx_it.c @@ -0,0 +1,92 @@ +/** + ****************************************************************************** + * @file py32f0xx_it.c + * @author MCU Application Team + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + *

© Copyright (c) Puya Semiconductor Co. + * All rights reserved.

+ * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "py32f0xx_it.h" + +/* Private includes ----------------------------------------------------------*/ +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private user code ---------------------------------------------------------*/ +/* External variables --------------------------------------------------------*/ + +/******************************************************************************/ +/* Cortex-M0+ Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + while (1) + { + } +} + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ +} + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ +} + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + HAL_IncTick(); +} + +/******************************************************************************/ +/* PY32F0xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file. */ +/******************************************************************************/ +/** + * @brief This function handles USART1 Interrupt . + */ +void USART1_IRQHandler(void) +{ + HAL_UART_IRQHandler(&huart1); +} + +/************************ (C) COPYRIGHT Puya *****END OF FILE******************/