Init
This commit is contained in:
commit
59102c006e
|
|
@ -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__ */
|
||||||
|
|
@ -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 <stdio.h>
|
||||||
|
|
||||||
|
#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__ */
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"cmake": {
|
||||||
|
"inc_dirs": [
|
||||||
|
"inc/"
|
||||||
|
],
|
||||||
|
"srcs": [
|
||||||
|
"src/**.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
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"cmake": {
|
||||||
|
"inc_dirs": [
|
||||||
|
"can"
|
||||||
|
],
|
||||||
|
"srcs": [
|
||||||
|
"can/**.c"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
Подпроект для тестирования железа на основе примеров от Nation.
|
||||||
|
Для запуска следует выполнить modular -c в папке prj, и работать с CMakeList.txt проектом из этой же папки
|
||||||
|
|
@ -0,0 +1,169 @@
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#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
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -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__ */
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"cmake": {
|
||||||
|
"inc_dirs": [
|
||||||
|
"./"
|
||||||
|
],
|
||||||
|
"srcs": [
|
||||||
|
"./**.c"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue