From 59102c006e6d040f4c90dd0448b4400b53edb32c Mon Sep 17 00:00:00 2001 From: cfif Date: Wed, 4 Dec 2024 13:10:47 +0300 Subject: [PATCH] Init --- bsp/inc/delay.h | 41 ++++++++++ bsp/inc/log.h | 104 ++++++++++++++++++++++++++ bsp/modular.json | 10 +++ bsp/src/delay.c | 79 ++++++++++++++++++++ bsp/src/log.c | 126 +++++++++++++++++++++++++++++++ bsp/src/print_remap.c | 73 ++++++++++++++++++ can.zip | Bin 0 -> 8797 bytes modular.json | 10 +++ prj/CMakeLists.txt | 65 ++++++++++++++++ prj/modular.json | 30 ++++++++ readme.md | 2 + uartTest/main.c | 169 ++++++++++++++++++++++++++++++++++++++++++ uartTest/main.h | 109 +++++++++++++++++++++++++++ uartTest/modular.json | 10 +++ 14 files changed, 828 insertions(+) create mode 100644 bsp/inc/delay.h create mode 100644 bsp/inc/log.h create mode 100644 bsp/modular.json create mode 100644 bsp/src/delay.c create mode 100644 bsp/src/log.c create mode 100644 bsp/src/print_remap.c create mode 100644 can.zip create mode 100644 modular.json create mode 100755 prj/CMakeLists.txt create mode 100644 prj/modular.json create mode 100644 readme.md create mode 100644 uartTest/main.c create mode 100644 uartTest/main.h create mode 100644 uartTest/modular.json diff --git a/bsp/inc/delay.h b/bsp/inc/delay.h new file mode 100644 index 0000000..58a89a7 --- /dev/null +++ b/bsp/inc/delay.h @@ -0,0 +1,41 @@ +/***************************************************************************** + * Copyright (c) 2019, Nations Technologies Inc. + * + * All rights reserved. + * **************************************************************************** + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Nations' name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OPT + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OPT CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OPT SERVICES; LOSS OF USE, DATA, + * OPT PROFITS; OPT BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OPT TORT (INCLUDING + * NEGLIGENCE OPT OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ****************************************************************************/ + +/** + * @file delay.h + * @author Nations + * @version v1.0.0 + * + * @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved. + */ +#ifndef __DELAY_H__ +#define __DELAY_H__ +#include "n32g45x.h" + +void systick_delay_us(u32 nus); +void systick_delay_ms(u16 nms); +#endif /* __DELAY_H__ */ diff --git a/bsp/inc/log.h b/bsp/inc/log.h new file mode 100644 index 0000000..b11dd16 --- /dev/null +++ b/bsp/inc/log.h @@ -0,0 +1,104 @@ +/***************************************************************************** + * Copyright (c) 2019, Nations Technologies Inc. + * + * All rights reserved. + * **************************************************************************** + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Nations' name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ****************************************************************************/ + +/** + * @file log.h + * @author Nations + * @version v1.0.1 + * + * @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved. + */ +#ifndef __LOG_H__ +#define __LOG_H__ + +#ifndef LOG_ENABLE +#define LOG_ENABLE 1 +#endif + +#if LOG_ENABLE + +#include "n32g45x.h" +#include + +#define LOG_USARTx USART1 +#define LOG_PERIPH RCC_APB2_PERIPH_USART1 +#define LOG_ENABLE_PERIPH_CLK RCC_EnableAPB2PeriphClk +#define LOG_GPIO GPIOA +#define LOG_PERIPH_GPIO RCC_APB2_PERIPH_GPIOA +#define LOG_REMAP 0 +#define LOG_TX_PIN GPIO_PIN_9 +#define LOG_RX_PIN GPIO_PIN_10 + +#define LOG_NONE 0 +#define LOG_ERROR 10 +#define LOG_WARNING 20 +#define LOG_INFO 30 +#define LOG_DEBUG 40 + +#ifndef LOG_LEVEL +#define LOG_LEVEL LOG_DEBUG +#endif + +#if LOG_LEVEL >= LOG_INFO +#define log_info(...) printf(__VA_ARGS__) +#else +#define log_info(...) +#endif + +#if LOG_LEVEL >= LOG_ERROR +#define log_error(...) printf(__VA_ARGS__) +#else +#define log_error(...) +#endif + +#if LOG_LEVEL >= LOG_WARNING +#define log_warning(...) printf(__VA_ARGS__) +#else +#define log_warning(...) +#endif + +#if LOG_LEVEL >= LOG_DEBUG +#define log_debug(...) printf(__VA_ARGS__) +#else +#define log_debug(...) +#endif + +void log_init(void); + +#else /* !LOG_ENABLE */ + +#define log_info(...) +#define log_warning(...) +#define log_error(...) +#define log_debug(...) +#define log_init() + +#endif + +#define log_func() log_debug("call %s\r\n", __FUNCTION__) + +#endif /* __LOG_H__ */ diff --git a/bsp/modular.json b/bsp/modular.json new file mode 100644 index 0000000..83ef8e5 --- /dev/null +++ b/bsp/modular.json @@ -0,0 +1,10 @@ +{ + "cmake": { + "inc_dirs": [ + "inc/" + ], + "srcs": [ + "src/**.c" + ] + } +} \ No newline at end of file diff --git a/bsp/src/delay.c b/bsp/src/delay.c new file mode 100644 index 0000000..d8b59bb --- /dev/null +++ b/bsp/src/delay.c @@ -0,0 +1,79 @@ +/***************************************************************************** + * Copyright (c) 2019, Nations Technologies Inc. + * + * All rights reserved. + * **************************************************************************** + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Nations' name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OPT + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OPT CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OPT SERVICES; LOSS OF USE, DATA, + * OPT PROFITS; OPT BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OPT TORT (INCLUDING + * NEGLIGENCE OPT OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ****************************************************************************/ + +/** + * @file delay.c + * @author Nations + * @version v1.0.0 + * + * @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved. + */ +#include "delay.h" + +/** + * @brief us delay program function. + * @param nus: the setting us value. + * note: The system clock should be an integer multiple of 1M . + * It is ensure accuracy . + */ +void systick_delay_us(u32 nus) +{ + u32 temp; + SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); //select system clock + SysTick->LOAD=nus*(SystemCoreClock/1000000); //time relode + SysTick->VAL=0x00; //clear timer value + SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //Start countdown + do + { + temp=SysTick->CTRL; + } + while(temp&0x01&&!(temp&(1<<16)));//wait for the time reach + SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //close the count + SysTick->VAL =0X00; //clear timer value +} + +/** + * @brief us delay program function. + * @param nus: the setting us value. + * note: The system clock should be an integer multiple of 1M . + * It is ensure accuracy . + */ +void systick_delay_ms(u16 nms) +{ + u32 temp; + SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); //select system clock + SysTick->LOAD=(u32)nms*((SystemCoreClock/1000000)*1000);//time relode(SysTick->LOAD is 24bit) + SysTick->VAL =0x00; //clear timer value + SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //Start countdown + do + { + temp=SysTick->CTRL; + } + while(temp&0x01&&!(temp&(1<<16)));//wait for the time reach + SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //close the count + SysTick->VAL =0X00; //clear timer value +} diff --git a/bsp/src/log.c b/bsp/src/log.c new file mode 100644 index 0000000..6b4e671 --- /dev/null +++ b/bsp/src/log.c @@ -0,0 +1,126 @@ +/***************************************************************************** + * Copyright (c) 2019, Nations Technologies Inc. + * + * All rights reserved. + * **************************************************************************** + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Nations' name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ****************************************************************************/ + +/** + * @file log.c + * @author Nations + * @version v1.0.1 + * + * @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved. + */ +#include "log.h" + +#if LOG_ENABLE + +void log_init(void) +{ + GPIO_InitType GPIO_InitStructure; + USART_InitType USART_InitStructure; + + // close JTAG + + RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO | LOG_PERIPH_GPIO, ENABLE); + if (LOG_REMAP) + { + if (LOG_REMAP == GPIO_RMP3_USART2) + { + // release PB4 + GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_NO_NJTRST, ENABLE); + } + GPIO_ConfigPinRemap(LOG_REMAP, ENABLE); + } + + LOG_ENABLE_PERIPH_CLK(LOG_PERIPH, ENABLE); + + + GPIO_InitStructure.Pin = LOG_TX_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitPeripheral(LOG_GPIO, &GPIO_InitStructure); + + //GPIO_InitStructure.Pin = LOG_RX_PIN; + //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + //GPIO_InitPeripheral(LOG_GPIO, &GPIO_InitStructure); + + USART_InitStructure.BaudRate = 115200; + USART_InitStructure.WordLength = USART_WL_8B; + USART_InitStructure.StopBits = USART_STPB_1; + USART_InitStructure.Parity = USART_PE_NO; + USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE; + USART_InitStructure.Mode = USART_MODE_TX; + + // init uart + USART_Init(LOG_USARTx, &USART_InitStructure); + + // enable uart + USART_Enable(LOG_USARTx, ENABLE); +} + +static int is_lr_sent = 0; + +int fputc(int ch, FILE* f) +{ + if (ch == '\r') + { + is_lr_sent = 1; + } + else if (ch == '\n') + { + if (!is_lr_sent) + { + USART_SendData(LOG_USARTx, (uint8_t)'\r'); + /* Loop until the end of transmission */ + while (USART_GetFlagStatus(LOG_USARTx, USART_FLAG_TXC) == RESET) + { + } + } + is_lr_sent = 0; + } + else + { + is_lr_sent = 0; + } + USART_SendData(LOG_USARTx, (uint8_t)ch); + /* Loop until the end of transmission */ + while (USART_GetFlagStatus(LOG_USARTx, USART_FLAG_TXC) == RESET) + { + } + return ch; +} + +#ifdef USE_FULL_ASSERT + +__WEAK void assert_failed(const uint8_t* expr, const uint8_t* file, uint32_t line) +{ + log_error("assertion failed: `%s` at %s:%d", expr, file, line); + while (1) + { + } +} +#endif // USE_FULL_ASSERT + +#endif // LOG_ENABLE diff --git a/bsp/src/print_remap.c b/bsp/src/print_remap.c new file mode 100644 index 0000000..9c65673 --- /dev/null +++ b/bsp/src/print_remap.c @@ -0,0 +1,73 @@ +/***************************************************************************** + * Copyright (c) 2019, Nations Technologies Inc. + * + * All rights reserved. + * **************************************************************************** + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Nations' name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ****************************************************************************/ + +/** + * @file print_remap.c + * @author Nations Solution Team + * @version v1.0.0 + * + * @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved. + */ +#include "stdio.h" +#include "stdlib.h" +#include "n32g45x.h" +#include "main2.h" + +/** @addtogroup N32G45X_StdPeriph_Template + * @{ + */ +int _write (int fd, char *pBuffer, int size) +{ +// uint16_t timeout = 0xFF; + uint32_t i; + + for (i = 0; i < size; i++) + { + fputc((uint8_t)pBuffer[i], stdout); +/* + USART_SendData(USARTx, (uint8_t)pBuffer[i]); + + while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET) + { + if (!timeout--) + { + break; + } + } +*/ + } + return size; +} + +int _read (int fd, char *pBuffer, int size) +{ + return size; +} + +/** + * @} + */ diff --git a/can.zip b/can.zip new file mode 100644 index 0000000000000000000000000000000000000000..b471fb5a9e9ac9e02b885df6d9a7d77c144b3969 GIT binary patch literal 8797 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 DeEu@j literal 0 HcmV?d00001 diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..ae6072d --- /dev/null +++ b/modular.json @@ -0,0 +1,10 @@ +{ + "cmake": { + "inc_dirs": [ + "can" + ], + "srcs": [ + "can/**.c" + ] + } +} \ No newline at end of file diff --git a/prj/CMakeLists.txt b/prj/CMakeLists.txt new file mode 100755 index 0000000..54d368e --- /dev/null +++ b/prj/CMakeLists.txt @@ -0,0 +1,65 @@ +#-- Service -------------------------------------------------------------------- +SET(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/MODULES/CmakeConfig_GCC_CortexM4/gcc_cm4f.cmake) +ENABLE_LANGUAGE(ASM) +CMAKE_MINIMUM_REQUIRED(VERSION 3.8.0) + +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0") + +IF (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + MESSAGE( + FATAL_ERROR + "In-source builds not allowed. + Please make a new directory (called a build directory) and run CMake from there. + You may need to remove CMakeCache.txt." + ) +ENDIF () + +SET(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +#-- Project config ------------------------------------------------------------- +PROJECT(HW_TEST) # Project name +SET(MCUNAME N32G45X) # MCU name +SET(USE_STDPERIPH_DRIVER 0) # OSECLK value in Hz (0 if disconnected) + +SET(OSECLK_VAL 12000000) # OSECLK value in Hz (0 if disconnected) +SET(SYSCLK PLL) # SYSCLK source: PLL, OSI, OSE +SET(CKO NONE) # Clockout source: PLL, NONE (no clockout) +SET(RETARGET 1) # Enable(1) or disable(0) printf retarget +SET(RETARGET_USE UART) # ITM or UART printf retarget +SET(PRINTF_FLOAT 0) # Enable(1) or disable(0) printf float support +SET(SCANF_FLOAT 0) # Enable(1) or disable(0) scanf float support + +#-- Defines -------------------------------------------------------------------- +ADD_DEFINITIONS(-D${MCUNAME}) +ADD_DEFINITIONS(-DUSE_STDPERIPH_DRIVER) +ADD_DEFINITIONS(-DHSE_VALUE=16000000) +ADD_DEFINITIONS(-DCMSIS_device_header="n32g45x.h") + + +#-- Project paths, Include dirs, Sources list --------------------------------- +include(modular.cmake) + + +#-- Options -------------------------------------------------------------------- +IF (PRINTF_FLOAT STREQUAL "1") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -u_printf_float") +ENDIF () +IF (SCANF_FLOAT STREQUAL "1") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -u_scanf_float") +ENDIF () + +#-- Linker script -------------------------------------------------------------- +SET(LDSCRIPT ${CMAKE_SOURCE_DIR}/MODULES/DeviceStartup_NATION_N32G45X/Ld/n32g45x_flash.ld) +SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T ${LDSCRIPT} -Wl,-Map=${CMAKE_BINARY_DIR}/${PROJECT_NAME}.map -Wl,--print-memory-usage") + +#-- Project linking ------------------------------------------------------------ +ADD_EXECUTABLE(${PROJECT_NAME}.elf ${SOURCES}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME}.elf) + +#-- Custom commands ------------------------------------------------------------ +ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME}.elf POST_BUILD + COMMAND ${CMAKE_OBJCOPY} "-Oihex" ${PROJECT_NAME}.elf ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.hex + COMMAND ${CMAKE_OBJCOPY} "-Obinary" ${PROJECT_NAME}.elf ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.bin + COMMAND ${CMAKE_OBJDUMP} "-DS" ${PROJECT_NAME}.elf > ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.dasm + COMMAND ${CMAKE_SIZE} ${PROJECT_NAME}.elf) diff --git a/prj/modular.json b/prj/modular.json new file mode 100644 index 0000000..28a2478 --- /dev/null +++ b/prj/modular.json @@ -0,0 +1,30 @@ +{ + "dep": [ + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "CmakeConfig_GCC_CortexM4" + }, + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "DeviceStartup_NATION_N32G45X" + }, + { + "type": "local", + "dir": "../bsp" + }, + { + "type": "local", + "dir": "../i2cTest" + } + ], + "cmake": { + "inc_dirs": [ + "inc/" + ], + "srcs": [ + "src/**.c" + ] + } +} \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..d59e3b3 --- /dev/null +++ b/readme.md @@ -0,0 +1,2 @@ +Подпроект для тестирования железа на основе примеров от Nation. +Для запуска следует выполнить modular -c в папке prj, и работать с CMakeList.txt проектом из этой же папки \ No newline at end of file diff --git a/uartTest/main.c b/uartTest/main.c new file mode 100644 index 0000000..01fe6c4 --- /dev/null +++ b/uartTest/main.c @@ -0,0 +1,169 @@ + +#include +#include "main.h" + + +USART_InitType USART_InitStructure; + +void RCC_Configuration1(void); + +void GPIO_Configuration1(void); + +void NVIC_Configuration1(void); + +void send(uint8_t *data, size_t size) { + uint8_t *end = data + size; + while (data < end) { + while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET); + USART_SendData(USARTx, *data); + while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET); + ++data; + } +} + +void delay(uint32_t ms) { + ms = ms * SystemCoreClock / 1000; + while (ms) { + --ms; + } +} + +void USART1_IRQHandler() { + uint8_t byte; + while (USART_GetFlagStatus(USARTx, USART_FLAG_RXDNE) == SET) { + byte = USART_ReceiveData(USARTx); + send(&byte, 1); + } +} + + +void USART2_IRQHandler() { + uint8_t byte; + while (USART_GetFlagStatus(USARTx, USART_FLAG_RXDNE) == SET) { + byte = USART_ReceiveData(USARTx); + send(&byte, 1); + } +} + +void UART4_IRQHandler() { + uint8_t byte; + while (USART_GetFlagStatus(USARTx, USART_FLAG_RXDNE) == SET) { + byte = USART_ReceiveData(USARTx); + send(&byte, 1); + } +} + +void NVIC_Configuration1(void) { + NVIC_InitType NVIC_InitStructure; + NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); + + NVIC_InitStructure.NVIC_IRQChannel = UARTx_IRQn; + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; + NVIC_Init(&NVIC_InitStructure); +} + +int main(void) { + RCC_Configuration1(); + NVIC_Configuration1(); + GPIO_Configuration1(); + + USART_InitStructure.BaudRate = 115200; + USART_InitStructure.WordLength = USART_WL_8B; + USART_InitStructure.StopBits = USART_STPB_1; + USART_InitStructure.Parity = USART_PE_NO; + USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE; + USART_InitStructure.Mode = USART_MODE_RX | USART_MODE_TX; + + + USART_Init(USARTx, &USART_InitStructure); + + USART_ConfigInt(USARTx, USART_INT_RXDNE, ENABLE); +// USART_ConfigInt(USARTx, USART_INT_TXDE, ENABLE); + + USART_Enable(USARTx, ENABLE); + + char msg[] = "0 helo world\n"; + +#define STR(VAL) (uint8_t *)VAL,(sizeof (VAL)-1) + for (;;) { + + ++*msg; + if (*msg > '9') { + *msg = '0'; + } +// send(STR(msg)); + delay(3000); + } + +} + +/** + * @brief Configures the different system clocks. + */ +void RCC_Configuration1(void) { + GPIO_APBxClkCmd(USARTx_GPIO_CLK | RCC_APB2_PERIPH_AFIO, ENABLE); + USART_APBxClkCmd(USARTx_CLK, ENABLE); +} + +void GPIO_Configuration1(void) { + GPIO_InitType GPIO_InitStructure; + + GPIO_InitStructure.Pin = USARTx_TxPin; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; + GPIO_InitPeripheral(USARTx_GPIO, &GPIO_InitStructure); + + GPIO_InitStructure.Pin = USARTx_RxPin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; + GPIO_InitPeripheral(USARTx_GPIO, &GPIO_InitStructure); + + GPIO_ConfigPinRemap(GPIO_RMP_USART1, ENABLE); +// GPIO_ConfigPinRemap(GPIO_RMP1_USART2, ENABLE); +} + + +#ifdef USE_FULL_ASSERT + +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file pointer to the source file name + * @param line assert_param error line source number + */ +void assert_failed(const uint8_t* expr, const uint8_t* file, uint32_t line) +{ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + + /* Infinite loop */ + while (1) + { + } +} + +#endif + +/** + * @} + */ + +/** + * @} + */ + + + + + + + + + + + + + + + + diff --git a/uartTest/main.h b/uartTest/main.h new file mode 100644 index 0000000..44cc33d --- /dev/null +++ b/uartTest/main.h @@ -0,0 +1,109 @@ +/***************************************************************************** + * Copyright (c) 2019, Nations Technologies Inc. + * + * All rights reserved. + * **************************************************************************** + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Nations' name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ****************************************************************************/ + +/** + * @file main.h + * @author Nations + * @version v1.0.0 + * + * @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved. + */ +#ifndef __MAIN_H__ +#define __MAIN_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "n32g45x.h" + + +#define _USART1_COM_ +//#define _USART4_COM_ +//#define _USART2_COM_ + +// A 10 9 +#ifdef _USART1_COM_ +#define USARTx USART1 +#define USARTx_GPIO GPIOB +#define USARTx_CLK RCC_APB2_PERIPH_USART1 +#define USARTx_GPIO_CLK RCC_APB2_PERIPH_GPIOB +#define USARTx_RxPin GPIO_PIN_7 +#define USARTx_TxPin GPIO_PIN_6 +#define UARTx_IRQn USART1_IRQn +#define GPIO_APBxClkCmd RCC_EnableAPB2PeriphClk +#define USART_APBxClkCmd RCC_EnableAPB2PeriphClk +#endif + + +//#ifdef _USART1_COM_ +//#define USARTx USART1 +//#define USARTx_GPIO GPIOA +//#define USARTx_CLK RCC_APB2_PERIPH_USART1 +//#define USARTx_GPIO_CLK RCC_APB2_PERIPH_GPIOA +//#define USARTx_RxPin GPIO_PIN_10 +//#define USARTx_TxPin GPIO_PIN_9 +// +//#define UARTx_IRQn USART1_IRQn +//#define GPIO_APBxClkCmd RCC_EnableAPB2PeriphClk +//#define USART_APBxClkCmd RCC_EnableAPB2PeriphClk +//#endif + + +//#ifdef _USART4_COM_ +//#define USARTx UART4 +//#define USARTx_GPIO GPIOC +//#define USARTx_CLK RCC_APB1_PERIPH_UART4 +//#define USARTx_GPIO_CLK RCC_APB2_PERIPH_GPIOC +//#define USARTx_RxPin GPIO_PIN_11 +//#define USARTx_TxPin GPIO_PIN_10 +// +//#define GPIO_APBxClkCmd RCC_EnableAPB2PeriphClk +//#define USART_APBxClkCmd RCC_EnableAPB1PeriphClk +//#define UARTx_IRQn UART4_IRQn +//#endif +// +//#ifdef _USART2_COM_ +//#define USARTx USART2 +//#define USARTx_GPIO GPIOD +//#define USARTx_CLK RCC_APB1_PERIPH_USART2 +//#define USARTx_GPIO_CLK RCC_APB2_PERIPH_GPIOD +//#define USARTx_RxPin GPIO_PIN_6 +//#define USARTx_TxPin GPIO_PIN_5 +// +//#define GPIO_APBxClkCmd RCC_EnableAPB2PeriphClk +//#define USART_APBxClkCmd RCC_EnableAPB1PeriphClk +//#define UARTx_IRQn USART2_IRQn +// +//#endif + +// +//#ifdef __cplusplus +//} +//#endif + +#endif /* __MAIN_H__ */ \ No newline at end of file diff --git a/uartTest/modular.json b/uartTest/modular.json new file mode 100644 index 0000000..0dd1901 --- /dev/null +++ b/uartTest/modular.json @@ -0,0 +1,10 @@ +{ + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "./**.c" + ] + } +} \ No newline at end of file