Merge pull request #5054 from yanmowudi/master

修复RTC问题,增加GCC工具链
This commit is contained in:
guo
2021-09-17 14:28:34 +08:00
committed by GitHub
52 changed files with 11451 additions and 11950 deletions

View File

@@ -21,6 +21,13 @@ CONFIG_RT_USING_IDLE_HOOK=y
CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
CONFIG_IDLE_THREAD_STACK_SIZE=256
# CONFIG_RT_USING_TIMER_SOFT is not set
#
# kservice optimization
#
# CONFIG_RT_KSERVICE_USING_STDLIB is not set
# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
# CONFIG_RT_USING_ASM_MEMCPY is not set
CONFIG_RT_DEBUG=y
CONFIG_RT_DEBUG_COLOR=y
# CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -54,6 +61,7 @@ CONFIG_RT_USING_MEMHEAP=y
# CONFIG_RT_USING_SLAB is not set
CONFIG_RT_USING_MEMHEAP_AS_HEAP=y
# CONFIG_RT_USING_USERHEAP is not set
# CONFIG_RT_USING_MEMTRACE is not set
CONFIG_RT_USING_HEAP=y
#
@@ -64,8 +72,9 @@ CONFIG_RT_USING_DEVICE=y
# CONFIG_RT_USING_INTERRUPT_INFO is not set
CONFIG_RT_USING_CONSOLE=y
CONFIG_RT_CONSOLEBUF_SIZE=128
CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
CONFIG_RT_VER_NUM=0x40003
CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
# CONFIG_RT_PRINTF_LONGLONG is not set
CONFIG_RT_VER_NUM=0x40004
CONFIG_ARCH_ARM=y
CONFIG_RT_USING_CPU_FFS=y
CONFIG_ARCH_ARM_CORTEX_M=y
@@ -89,19 +98,19 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
# Command shell
#
CONFIG_RT_USING_FINSH=y
CONFIG_RT_USING_MSH=y
CONFIG_FINSH_USING_MSH=y
CONFIG_FINSH_THREAD_NAME="tshell"
CONFIG_FINSH_THREAD_PRIORITY=20
CONFIG_FINSH_THREAD_STACK_SIZE=4096
CONFIG_FINSH_USING_HISTORY=y
CONFIG_FINSH_HISTORY_LINES=5
CONFIG_FINSH_USING_SYMTAB=y
CONFIG_FINSH_CMD_SIZE=80
CONFIG_MSH_USING_BUILT_IN_COMMANDS=y
CONFIG_FINSH_USING_DESCRIPTION=y
# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
CONFIG_FINSH_THREAD_PRIORITY=20
CONFIG_FINSH_THREAD_STACK_SIZE=4096
CONFIG_FINSH_CMD_SIZE=80
# CONFIG_FINSH_USING_AUTH is not set
CONFIG_FINSH_USING_MSH=y
CONFIG_FINSH_USING_MSH_DEFAULT=y
# CONFIG_FINSH_USING_MSH_ONLY is not set
CONFIG_FINSH_ARG_MAX=10
#
@@ -116,6 +125,8 @@ CONFIG_RT_USING_DEVICE_IPC=y
CONFIG_RT_PIPE_BUFSZ=512
# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
CONFIG_RT_USING_SERIAL=y
CONFIG_RT_USING_SERIAL_V1=y
# CONFIG_RT_USING_SERIAL_V2 is not set
# CONFIG_RT_SERIAL_USING_DMA is not set
CONFIG_RT_SERIAL_RB_BUFSZ=64
# CONFIG_RT_USING_CAN is not set
@@ -154,6 +165,7 @@ CONFIG_RT_USING_PIN=y
CONFIG_RT_USING_LIBC=y
# CONFIG_RT_USING_PTHREADS is not set
# CONFIG_RT_USING_MODULE is not set
CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
#
# Network
@@ -190,8 +202,14 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_RT_USING_RYM is not set
# CONFIG_RT_USING_ULOG is not set
# CONFIG_RT_USING_UTEST is not set
# CONFIG_RT_USING_RT_LINK is not set
# CONFIG_RT_USING_LWP is not set
#
# RT-Thread Utestcases
#
# CONFIG_RT_USING_UTESTCASES is not set
#
# RT-Thread online packages
#
@@ -239,6 +257,7 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_AT_DEVICE is not set
# CONFIG_PKG_USING_ATSRV_SOCKET is not set
# CONFIG_PKG_USING_WIZNET is not set
# CONFIG_PKG_USING_ZB_COORDINATOR is not set
#
# IoT Cloud
@@ -259,8 +278,6 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_LIBRWS is not set
# CONFIG_PKG_USING_TCPSERVER is not set
# CONFIG_PKG_USING_PROTOBUF_C is not set
# CONFIG_PKG_USING_ONNX_PARSER is not set
# CONFIG_PKG_USING_ONNX_BACKEND is not set
# CONFIG_PKG_USING_DLT645 is not set
# CONFIG_PKG_USING_QXWZ is not set
# CONFIG_PKG_USING_SMTP_CLIENT is not set
@@ -275,6 +292,13 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_BTSTACK is not set
# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
# CONFIG_PKG_USING_MAVLINK is not set
# CONFIG_PKG_USING_RAPIDJSON is not set
# CONFIG_PKG_USING_BSAL is not set
# CONFIG_PKG_USING_AGILE_MODBUS is not set
# CONFIG_PKG_USING_AGILE_FTP is not set
# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
# CONFIG_PKG_USING_RT_LINK_HW is not set
#
# security packages
@@ -291,6 +315,7 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_LUA is not set
# CONFIG_PKG_USING_JERRYSCRIPT is not set
# CONFIG_PKG_USING_MICROPYTHON is not set
# CONFIG_PKG_USING_PIKASCRIPT is not set
#
# multimedia packages
@@ -300,9 +325,13 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_STEMWIN is not set
# CONFIG_PKG_USING_WAVPLAYER is not set
# CONFIG_PKG_USING_TJPGD is not set
# CONFIG_PKG_USING_PDFGEN is not set
# CONFIG_PKG_USING_HELIX is not set
# CONFIG_PKG_USING_AZUREGUIX is not set
# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
# CONFIG_PKG_USING_NUEMWIN is not set
# CONFIG_PKG_USING_MP3PLAYER is not set
# CONFIG_PKG_USING_TINYJPEG is not set
#
# tools packages
@@ -311,6 +340,7 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_EASYFLASH is not set
# CONFIG_PKG_USING_EASYLOGGER is not set
# CONFIG_PKG_USING_SYSTEMVIEW is not set
# CONFIG_PKG_USING_SEGGER_RTT is not set
# CONFIG_PKG_USING_RDB is not set
# CONFIG_PKG_USING_QRCODE is not set
# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
@@ -339,33 +369,23 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_ANV_MEMLEAK is not set
# CONFIG_PKG_USING_ANV_TESTSUIT is not set
# CONFIG_PKG_USING_ANV_BENCH is not set
# CONFIG_PKG_USING_DEVMEM is not set
# CONFIG_PKG_USING_REGEX is not set
# CONFIG_PKG_USING_MEM_SANDBOX is not set
# CONFIG_PKG_USING_SOLAR_TERMS is not set
# CONFIG_PKG_USING_GAN_ZHI is not set
#
# system packages
#
# CONFIG_PKG_USING_GUIENGINE is not set
# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_CAIRO is not set
# CONFIG_PKG_USING_PIXMAN is not set
# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_PARTITION is not set
# CONFIG_PKG_USING_FAL is not set
# CONFIG_PKG_USING_FLASHDB is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
# CONFIG_PKG_USING_CMSIS is not set
# CONFIG_PKG_USING_DFS_YAFFS is not set
# CONFIG_PKG_USING_LITTLEFS is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
# CONFIG_PKG_USING_ROBOTS is not set
# CONFIG_PKG_USING_EV is not set
# CONFIG_PKG_USING_SYSWATCH is not set
# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
# CONFIG_PKG_USING_PLCCORE is not set
# CONFIG_PKG_USING_RAMDISK is not set
# CONFIG_PKG_USING_MININI is not set
# CONFIG_PKG_USING_QBOOT is not set
#
# acceleration: Assembly language or algorithmic acceleration packages
#
# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
# CONFIG_PKG_USING_QFPLIB_M3 is not set
#
# Micrium: Micrium software products porting for RT-Thread
@@ -376,14 +396,39 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_UC_CLK is not set
# CONFIG_PKG_USING_UC_COMMON is not set
# CONFIG_PKG_USING_UC_MODBUS is not set
# CONFIG_PKG_USING_GUIENGINE is not set
# CONFIG_PKG_USING_PERSIMMON is not set
# CONFIG_PKG_USING_CAIRO is not set
# CONFIG_PKG_USING_PIXMAN is not set
# CONFIG_PKG_USING_PARTITION is not set
# CONFIG_PKG_USING_FAL is not set
# CONFIG_PKG_USING_FLASHDB is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
# CONFIG_PKG_USING_CMSIS is not set
# CONFIG_PKG_USING_DFS_YAFFS is not set
# CONFIG_PKG_USING_LITTLEFS is not set
# CONFIG_PKG_USING_DFS_JFFS2 is not set
# CONFIG_PKG_USING_DFS_UFFS is not set
# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
# CONFIG_PKG_USING_ROBOTS is not set
# CONFIG_PKG_USING_EV is not set
# CONFIG_PKG_USING_SYSWATCH is not set
# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
# CONFIG_PKG_USING_PLCCORE is not set
# CONFIG_PKG_USING_RAMDISK is not set
# CONFIG_PKG_USING_MININI is not set
# CONFIG_PKG_USING_QBOOT is not set
# CONFIG_PKG_USING_PPOOL is not set
# CONFIG_PKG_USING_OPENAMP is not set
# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
# CONFIG_PKG_USING_QFPLIB_M3 is not set
# CONFIG_PKG_USING_LPM is not set
# CONFIG_PKG_USING_TLSF is not set
# CONFIG_PKG_USING_EVENT_RECORDER is not set
# CONFIG_PKG_USING_ARM_2D is not set
# CONFIG_PKG_USING_WCWIDTH is not set
#
# peripheral libraries and drivers
@@ -408,7 +453,6 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_WM_LIBRARIES is not set
# CONFIG_PKG_USING_KENDRYTE_SDK is not set
# CONFIG_PKG_USING_INFRARED is not set
# CONFIG_PKG_USING_ROSSERIAL is not set
# CONFIG_PKG_USING_AGILE_BUTTON is not set
# CONFIG_PKG_USING_AGILE_LED is not set
# CONFIG_PKG_USING_AT24CXX is not set
@@ -446,10 +490,55 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
# CONFIG_PKG_USING_VDEVICE is not set
# CONFIG_PKG_USING_SGM706 is not set
# CONFIG_PKG_USING_STM32WB55_SDK is not set
# CONFIG_PKG_USING_RDA58XX is not set
# CONFIG_PKG_USING_LIBNFC is not set
# CONFIG_PKG_USING_MFOC is not set
# CONFIG_PKG_USING_TMC51XX is not set
# CONFIG_PKG_USING_TCA9534 is not set
# CONFIG_PKG_USING_KOBUKI is not set
# CONFIG_PKG_USING_ROSSERIAL is not set
# CONFIG_PKG_USING_MICRO_ROS is not set
# CONFIG_PKG_USING_MCP23008 is not set
# CONFIG_PKG_USING_BLUETRUM_SDK is not set
#
# AI packages
#
# CONFIG_PKG_USING_LIBANN is not set
# CONFIG_PKG_USING_NNOM is not set
# CONFIG_PKG_USING_ONNX_BACKEND is not set
# CONFIG_PKG_USING_ONNX_PARSER is not set
# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
# CONFIG_PKG_USING_ELAPACK is not set
# CONFIG_PKG_USING_ULAPACK is not set
# CONFIG_PKG_USING_QUEST is not set
# CONFIG_PKG_USING_NAXOS is not set
#
# miscellaneous packages
#
#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
#
# entertainment: terminal games and other interesting software packages
#
# CONFIG_PKG_USING_CMATRIX is not set
# CONFIG_PKG_USING_SL is not set
# CONFIG_PKG_USING_CAL is not set
# CONFIG_PKG_USING_ACLOCK is not set
# CONFIG_PKG_USING_THREES is not set
# CONFIG_PKG_USING_2048 is not set
# CONFIG_PKG_USING_SNAKE is not set
# CONFIG_PKG_USING_TETRIS is not set
# CONFIG_PKG_USING_DONUT is not set
# CONFIG_PKG_USING_LIBCSV is not set
# CONFIG_PKG_USING_OPTPARSE is not set
# CONFIG_PKG_USING_FASTLZ is not set
@@ -460,44 +549,25 @@ CONFIG_RT_USING_LIBC=y
# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
# CONFIG_PKG_USING_CANFESTIVAL is not set
# CONFIG_PKG_USING_ZLIB is not set
# CONFIG_PKG_USING_MINIZIP is not set
# CONFIG_PKG_USING_DSTR is not set
# CONFIG_PKG_USING_TINYFRAME is not set
# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
# CONFIG_PKG_USING_DIGITALCTRL is not set
# CONFIG_PKG_USING_UPACKER is not set
# CONFIG_PKG_USING_UPARAM is not set
#
# samples: kernel and components samples
#
# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
# CONFIG_PKG_USING_HELLO is not set
# CONFIG_PKG_USING_VI is not set
# CONFIG_PKG_USING_KI is not set
# CONFIG_PKG_USING_NNOM is not set
# CONFIG_PKG_USING_LIBANN is not set
# CONFIG_PKG_USING_ELAPACK is not set
# CONFIG_PKG_USING_ARMv7M_DWT is not set
# CONFIG_PKG_USING_VT100 is not set
# CONFIG_PKG_USING_ULAPACK is not set
# CONFIG_PKG_USING_UKAL is not set
# CONFIG_PKG_USING_CRCLIB is not set
#
# games: games run on RT-Thread console
#
# CONFIG_PKG_USING_THREES is not set
# CONFIG_PKG_USING_2048 is not set
# CONFIG_PKG_USING_SNAKE is not set
# CONFIG_PKG_USING_TETRIS is not set
# CONFIG_PKG_USING_LWGPS is not set
# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
# CONFIG_PKG_USING_STATE_MACHINE is not set
# CONFIG_PKG_USING_MCURSES is not set
# CONFIG_PKG_USING_COWSAY is not set
# CONFIG_PKG_USING_TERMBOX is not set
#
# Hardware Drivers Config
@@ -508,8 +578,8 @@ CONFIG_SOC_SWM320=y
# On-chip Peripheral Drivers
#
CONFIG_BSP_USING_UART=y
CONFIG_BSP_USING_UART0=y
# CONFIG_BSP_USING_UART1 is not set
# CONFIG_BSP_USING_UART0 is not set
CONFIG_BSP_USING_UART1=y
# CONFIG_BSP_USING_UART2 is not set
# CONFIG_BSP_USING_UART3 is not set
CONFIG_BSP_USING_GPIO=y

View File

@@ -93,7 +93,7 @@
- 32K片内时钟源
- 232MHz片外晶振
芯片更多详细信息请参考[华芯微特技术支持][http://www.synwit.cn/support-1/3.html]
芯片更多详细信息请参考[华芯微特技术支持](http://www.synwit.cn/support-1/3.html)
## 编译说明
@@ -119,7 +119,7 @@
- 使用 Jlink 连接开发板到 PC (需要 Jlink 驱动)
将串口 0 引脚为:`[PA2/PA3]`和 USB 转串口模块 P2 相连串口配置方式为115200-N-8-1。
将串口 1 引脚为:`[PC2/PC3]`和 USB 转串口模块 J11 相连串口配置方式为115200-N-8-1。
当使用 [env工具](https://www.rt-thread.org/page/download.html) 正确编译产生出rtthread.bin映像文件后可以使用 ISP 的方式来烧写到设备中。
@@ -166,4 +166,4 @@ msh />
* [RT-Thread 文档中心](https://www.rt-thread.org/document/site/)
* [SWM320数据手册](http://www.synwit.cn/support-1/3.html)
* [SWM320数据手册](https://www.synwit.cn/col.jsp?id=155)

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
@@ -10,7 +10,7 @@
#include <rtthread.h>
#include <rtdevice.h>
#define LED_PIN 21
#define LED_PIN 32
int main(void)
{
@@ -29,7 +29,7 @@ int main(void)
}
// #ifdef RT_USING_PIN
// #define KEY1_PIN 25
// #define KEY1_PIN 31
// void key1_cb(void *args)
// {
// rt_kprintf("key1 irq!\n");
@@ -46,7 +46,7 @@ int main(void)
// #endif
#ifdef RT_USING_ADC
#define ADC_DEV_NAME "adc0"
#define ADC_DEV_NAME "adc1"
#define ADC_DEV_CHANNEL 0
#define REFER_VOLTAGE 330
#define CONVERT_BITS (1 << 12)
@@ -64,16 +64,15 @@ static int adc_vol_sample(int argc, char *argv[])
return RT_ERROR;
}
while (1)
{
ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
rt_kprintf("the value is :%d,", value);
vol = value * REFER_VOLTAGE / CONVERT_BITS;
rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
rt_thread_mdelay(500);
ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
}
ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
rt_kprintf("the value is :%d,", value);
vol = value * REFER_VOLTAGE / CONVERT_BITS;
rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
return ret;
}
@@ -143,17 +142,17 @@ MSH_CMD_EXPORT(hwtimer_sample, hwtimer sample);
#endif
#ifdef RT_USING_PWM
#define PWM_DEV_NAME "pwm0" /* PWM???? */
#define PWM_DEV_CHANNEL 0 /* PWM?? */
#define PWM_DEV_NAME "pwm0" /* PWM设备名称 */
#define PWM_DEV_CHANNEL 0 /* PWM通道 */
struct rt_device_pwm *pwm_dev; /* PWM???? */
struct rt_device_pwm *pwm_dev; /* PWM设备句柄 */
static int pwm_sample(int argc, char *argv[])
{
rt_uint32_t period, pulse;
period = 500000; /* ???0.5ms,?????ns */
pulse = 250000; /* PWM?????,?????ns */
period = 500000; /* 周期为0.5ms,单位为纳秒ns */
pulse = 250000; /* PWM脉冲宽度值,单位为纳秒ns */
pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
if (pwm_dev == RT_NULL)
@@ -170,26 +169,27 @@ MSH_CMD_EXPORT(pwm_sample, pwm sample);
#endif
#ifdef RT_USING_RTC
#include <time.h>
static int rtc_sample(int argc, char *argv[])
{
rt_err_t ret = RT_EOK;
time_t now;
ret = set_date(2020, 6, 15);
ret = set_date(2020, 2, 28);
if (ret != RT_EOK)
{
rt_kprintf("set RTC date failed\n");
return ret;
}
ret = set_time(11, 15, 50);
ret = set_time(23, 59, 55);
if (ret != RT_EOK)
{
rt_kprintf("set RTC time failed\n");
return ret;
}
rt_thread_mdelay(3000);
//rt_thread_mdelay(3000);
now = time(RT_NULL);
rt_kprintf("%s\n", ctime(&now));
@@ -205,7 +205,7 @@ static rt_device_t wdg_dev;
static void idle_hook(void)
{
rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, RT_NULL);
rt_kprintf("feed the dog!\n ");
}
@@ -264,7 +264,7 @@ MSH_CMD_EXPORT(wdt_sample, wdt sample);
static int rt_hw_spi_flash_init(void)
{
rt_hw_spi_device_attach("spi0", "spi00", GPIOA, PIN12);
rt_hw_spi_device_attach("spi0", "spi00", GPIOP, PIN22);
if (RT_NULL == rt_sfud_flash_probe(W25Q_FLASH_NAME, W25Q_SPI_DEVICE_NAME))
{
@@ -273,7 +273,6 @@ static int rt_hw_spi_flash_init(void)
return RT_EOK;
}
/* ???????? */
INIT_COMPONENT_EXPORT(rt_hw_spi_flash_init);
static void spi_w25q_sample(int argc, char *argv[])
@@ -292,12 +291,12 @@ static void spi_w25q_sample(int argc, char *argv[])
rt_strncpy(name, W25Q_SPI_DEVICE_NAME, RT_NAME_MAX);
}
/* ?? spi ???????? */
/* 查找 spi 设备获取设备句柄 */
spi_dev_w25q = (struct rt_spi_device *)rt_device_find(name);
struct rt_spi_configuration cfg;
cfg.data_width = 8;
cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB;
cfg.max_hz = 20 * 1000 * 1000; /* 20M */
cfg.max_hz = 30 * 1000 * 1000; /* 20M */
rt_spi_configure(spi_dev_w25q, &cfg);
if (!spi_dev_w25q)
@@ -306,11 +305,11 @@ static void spi_w25q_sample(int argc, char *argv[])
}
else
{
/* ??1:?? rt_spi_send_then_recv()??????ID */
/* 方式1使用 rt_spi_send_then_recv()发送命令读取ID */
rt_spi_send_then_recv(spi_dev_w25q, &w25x_read_id, 1, id, 5);
rt_kprintf("use rt_spi_send_then_recv() read w25q ID is:%x%x\n", id[3], id[4]);
/* ??2:?? rt_spi_transfer_message()??????ID */
/* 方式2使用 rt_spi_transfer_message()发送命令读取ID */
struct rt_spi_message msg1, msg2;
msg1.send_buf = &w25x_read_id;
@@ -352,7 +351,6 @@ static void spi_flash_elmfat_sample(void)
rt_kprintf("Write string '%s' to /user/test.txt.\n", str);
/* ????????????,??????????????*/
fd = open("/user/test.txt", O_WRONLY | O_CREAT);
if (fd >= 0)
{
@@ -362,7 +360,6 @@ static void spi_flash_elmfat_sample(void)
close(fd);
}
/* ????????? */
fd = open("/user/test.txt", O_RDONLY);
if (fd >= 0)
{
@@ -397,7 +394,7 @@ MSH_CMD_EXPORT(spi_w25q_sample, spi w25q sample);
//{
// int fd, size;
// struct statfs elm_stat;
// char str[] = "elmfat mount to sdcard.\r\n", buf[80];
// char str[] = "elmfat mount to sdcard.", buf[80];
// if (dfs_mkfs("elm", SDCARD_NAME) == 0)
// rt_kprintf("make elmfat filesystem success.\n");

View File

@@ -245,11 +245,11 @@ menu "On-chip Peripheral Drivers"
select RT_USING_SPI
if BSP_USING_SPI
config BSP_USING_SPI0
bool "Enable SPI0 BUS(CS/A12,MISO/A11,MOSI/A10,CLK/A9)"
bool "Enable SPI0 BUS(CS/P22,MISO/P19,MOSI/P18,CLK/P23)"
default n
config BSP_USING_SPI1
bool "Enable SPI1 BUS(CS/C4,MISO/C5,MOSI/C6,CLK/C7)"
bool "Enable SPI1 BUS(CS/B6,MISO/B3,MOSI/B2,CLK/B1)"
default n
endif

View File

@@ -17,6 +17,7 @@ static void bsp_clock_config(void)
SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
SysTick->CTRL |= 0x00000004UL;
}
void SysTick_Handler(void)
{
/* enter interrupt */
@@ -28,6 +29,41 @@ void SysTick_Handler(void)
rt_interrupt_leave();
}
/**
* This function will delay for some us.
*
* @param us the delay time of us
*/
void rt_hw_us_delay(rt_uint32_t us)
{
rt_uint32_t ticks;
rt_uint32_t told, tnow, tcnt = 0;
rt_uint32_t reload = SysTick->LOAD;
ticks = us * reload / (1000000 / RT_TICK_PER_SECOND);
told = SysTick->VAL;
while (1)
{
tnow = SysTick->VAL;
if (tnow != told)
{
if (tnow < told)
{
tcnt += told - tnow;
}
else
{
tcnt += reload - tnow + told;
}
told = tnow;
if (tcnt >= ticks)
{
break;
}
}
}
}
void rt_hw_board_init()
{
bsp_clock_config();

View File

@@ -21,11 +21,6 @@ struct swm_hwcrypto_device
#ifdef BSP_USING_CRC
struct hash_ctx_des
{
struct swm_crc_cfg contex;
};
static struct hwcrypto_crc_cfg crc_backup_cfg;
static rt_uint32_t _crc_update(struct hwcrypto_crc *ctx, const rt_uint8_t *in, rt_size_t length)
@@ -108,6 +103,7 @@ static const struct hwcrypto_crc_ops crc_ops =
{
.update = _crc_update,
};
#endif /* BSP_USING_CRC */
static rt_err_t _crypto_create(struct rt_hwcrypto_ctx *ctx)
{
@@ -170,7 +166,7 @@ static rt_err_t _crypto_clone(struct rt_hwcrypto_ctx *des, const struct rt_hwcry
case HWCRYPTO_TYPE_CRC:
if (des->contex && src->contex)
{
rt_memcpy(des->contex, src->contex, sizeof(struct hash_ctx_des));
rt_memcpy(des->contex, src->contex, sizeof(struct swm_crc_cfg));
}
break;
#endif /* BSP_USING_CRC */
@@ -226,5 +222,5 @@ int rt_hw_crypto_init(void)
}
INIT_BOARD_EXPORT(rt_hw_crypto_init);
#endif /* BSP_USING_WDT */
#endif /* RT_USING_WDT */
#endif /* RT_USING_HWCRYPTO */

View File

@@ -475,6 +475,7 @@ static void rt_hw_pin_isr(GPIO_TypeDef *GPIOx)
}
}
}
void GPIOA_Handler(void)
{
rt_interrupt_enter();

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*

View File

@@ -10,6 +10,7 @@
*/
#include "drv_rtc.h"
#include <sys/time.h>
#ifdef RT_USING_RTC
#ifdef BSP_USING_RTC
@@ -18,8 +19,6 @@
#define LOG_TAG "drv.rtc"
#include <drv_log.h>
static struct rt_device rtc_device;
static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
{
uint32_t i, cnt = 0;
@@ -55,8 +54,8 @@ static time_t swm_get_rtc_time_stamp(void)
tm_new.tm_min = get_datetime.Minute;
tm_new.tm_hour = get_datetime.Hour;
tm_new.tm_mday = get_datetime.Date;
tm_new.tm_mon = get_datetime.Month - 1;
tm_new.tm_year = get_datetime.Year - 1900;
tm_new.tm_mon = get_datetime.Month;
tm_new.tm_year = get_datetime.Year;
LOG_D("get rtc time.");
return mktime(&tm_new);
@@ -72,9 +71,9 @@ static rt_err_t swm_set_rtc_time_stamp(time_t time_stamp)
set_datetime.Minute = p_tm->tm_min;
set_datetime.Hour = p_tm->tm_hour;
set_datetime.Date = p_tm->tm_mday;
set_datetime.Month = p_tm->tm_mon + 1;
set_datetime.Year = p_tm->tm_year + 1900;
// datetime.Day = p_tm->tm_wday;
set_datetime.Month = p_tm->tm_mon;
set_datetime.Year = p_tm->tm_year;
// set_datetime.Day = p_tm->tm_wday;
RTC_Stop(RTC);
while (RTC->CFGABLE == 0)
@@ -86,7 +85,7 @@ static rt_err_t swm_set_rtc_time_stamp(time_t time_stamp)
RTC->MONDAY = (calcWeekDay(set_datetime.Year, set_datetime.Month, set_datetime.Date)
<< RTC_MONDAY_DAY_Pos) |
((set_datetime.Month) << RTC_MONDAY_MON_Pos);
RTC->YEAR = set_datetime.Year - 1901;
RTC->YEAR = set_datetime.Year;
RTC->LOAD = 1 << RTC_LOAD_TIME_Pos;
RTC_Start(RTC);
@@ -94,43 +93,7 @@ static rt_err_t swm_set_rtc_time_stamp(time_t time_stamp)
return RT_EOK;
}
static rt_err_t swm_rtc_control(rt_device_t rtc_device, int cmd, void *args)
{
rt_err_t result = RT_EOK;
RT_ASSERT(rtc_device != RT_NULL);
switch (cmd)
{
case RT_DEVICE_CTRL_RTC_GET_TIME:
*(rt_uint32_t *)args = swm_get_rtc_time_stamp();
LOG_D("RTC: get rtc_time %x\n", *(rt_uint32_t *)args);
break;
case RT_DEVICE_CTRL_RTC_SET_TIME:
if (swm_set_rtc_time_stamp(*(rt_uint32_t *)args))
{
result = -RT_ERROR;
}
LOG_D("RTC: set rtc_time %x\n", *(rt_uint32_t *)args);
break;
default:
break;
}
return result;
}
#ifdef RT_USING_DEVICE_OPS
const static struct rt_device_ops swm_rtc_ops =
{
RT_NULL,
RT_NULL,
RT_NULL,
RT_NULL,
RT_NULL,
swm_rtc_control};
#endif
static void swm_rtc_init(void)
static rt_err_t swm_rtc_init(void)
{
RTC_InitStructure rtc_initstruct;
@@ -144,37 +107,50 @@ static void swm_rtc_init(void)
rtc_initstruct.MinuteIEn = 0;
RTC_Init(RTC, &rtc_initstruct);
RTC_Start(RTC);
return RT_EOK;
}
static rt_err_t rt_hw_rtc_register(rt_device_t rtc_device, const char *name, rt_uint32_t flag)
static rt_err_t swm_rtc_get_secs(void *args)
{
RT_ASSERT(rtc_device != RT_NULL);
*(rt_uint32_t *)args = swm_get_rtc_time_stamp();
LOG_D("RTC: get rtc_time %x\n", *(rt_uint32_t *)args);
swm_rtc_init();
#ifdef RT_USING_DEVICE_OPS
rtc_device->ops = &swm_rtc_ops;
#else
rtc_device->init = RT_NULL;
rtc_device->open = RT_NULL;
rtc_device->close = RT_NULL;
rtc_device->read = RT_NULL;
rtc_device->write = RT_NULL;
rtc_device->control = swm_rtc_control;
#endif
rtc_device->type = RT_Device_Class_RTC;
rtc_device->rx_indicate = RT_NULL;
rtc_device->tx_complete = RT_NULL;
rtc_device->user_data = RT_NULL;
/* register a character device */
return rt_device_register(rtc_device, name, flag);
return RT_EOK;
}
static rt_err_t swm_rtc_set_secs(void *args)
{
rt_err_t result = RT_EOK;
if (swm_set_rtc_time_stamp(*(rt_uint32_t *)args))
{
result = -RT_ERROR;
}
LOG_D("RTC: set rtc_time %x\n", *(rt_uint32_t *)args);
return result;
}
static const struct rt_rtc_ops swm_rtc_ops =
{
swm_rtc_init,
swm_rtc_get_secs,
swm_rtc_set_secs,
RT_NULL,
RT_NULL,
RT_NULL,
RT_NULL,
};
static rt_rtc_dev_t swm_rtc_device;
int rt_hw_rtc_init(void)
{
rt_err_t result;
result = rt_hw_rtc_register(&rtc_device, "rtc", RT_DEVICE_FLAG_RDWR);
swm_rtc_device.ops = &swm_rtc_ops;
result = rt_hw_rtc_register(&swm_rtc_device, "rtc", RT_DEVICE_FLAG_RDWR,RT_NULL);
if (result != RT_EOK)
{
LOG_E("rtc register err code: %d", result);

View File

@@ -47,7 +47,7 @@ static void rthw_sdio_wait_completed(struct rthw_sdio *sdio)
SDIO_TypeDef *hw_sdio = sdio->sdio_des.hw_sdio;
if (rt_event_recv(&sdio->event, 0xffffffff, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
rt_tick_from_millisecond(5000), &status) != RT_EOK)
rt_tick_from_millisecond(1000), &status) != RT_EOK)
{
LOG_E("wait completed timeout");
cmd->err = -RT_ETIMEOUT;

View File

@@ -279,15 +279,15 @@ int rt_hw_spi_init(void)
rt_err_t result;
#ifdef BSP_USING_SPI0
PORT_Init(PORTA, PIN9, FUNMUX1_SPI0_SCLK, 0);
PORT_Init(PORTA, PIN10, FUNMUX0_SPI0_MOSI, 0);
PORT_Init(PORTA, PIN11, FUNMUX1_SPI0_MISO, 1);
PORT_Init(PORTP, PIN23, FUNMUX1_SPI0_SCLK, 0);
PORT_Init(PORTP, PIN18, FUNMUX0_SPI0_MOSI, 0);
PORT_Init(PORTP, PIN19, FUNMUX1_SPI0_MISO, 1);
#endif //BSP_USING_SPI0
#ifdef BSP_USING_SPI1
PORT_Init(PORTC, PIN7, FUNMUX1_SPI1_SCLK, 0);
PORT_Init(PORTC, PIN6, FUNMUX0_SPI1_MOSI, 0);
PORT_Init(PORTC, PIN5, FUNMUX1_SPI1_MISO, 1);
PORT_Init(PORTB, PIN1, FUNMUX1_SPI1_SCLK, 0);
PORT_Init(PORTB, PIN2, FUNMUX0_SPI1_MOSI, 0);
PORT_Init(PORTB, PIN3, FUNMUX1_SPI1_MISO, 1);
#endif //BSP_USING_SPI1
for (int i = 0; i < sizeof(spi_cfg) / sizeof(spi_cfg[0]); i++)
{

View File

@@ -1,71 +1,137 @@
/* Entry Point */
ENTRY(Reset_Handler)
/* Specify the memory areas */
/* Program Entry, set to mark it as "used" and avoid gc */
MEMORY
{
ROM (arx) : ORIGIN = 0x00000000, LENGTH = 0x00080000 /* 512k */
RAM (arw) : ORIGIN = 0x20000000, LENGTH = 0x00020000 /* 128k */
CODE (rx) : ORIGIN = 0x00000000, LENGTH = 512k /* 1024KB flash */
DATA (rw) : ORIGIN = 0x20000000, LENGTH = 128k /* 128K sram */
}
ENTRY(Reset_Handler)
_system_stack_size = 0x200;
/* Define output sections */
SECTIONS
{
. = ORIGIN(ROM);
.text :
{
KEEP(*(.isr_vector))
*(.text)
*(.text*)
. = ALIGN(4);
_stext = .;
KEEP(*(.isr_vector)) /* Startup code */
. = ALIGN(4);
*(.text) /* remaining code */
*(.text.*) /* remaining code */
*(.rodata) /* read-only data (constants) */
*(.rodata*)
} > ROM
*(.glue_7)
*(.glue_7t)
*(.gnu.linkonce.t*)
. = ALIGN(4);
__data_load__ = LOADADDR(.data);
/* section information for finsh shell */
. = ALIGN(4);
__fsymtab_start = .;
KEEP(*(FSymTab))
__fsymtab_end = .;
. = ALIGN(4);
__vsymtab_start = .;
KEEP(*(VSymTab))
__vsymtab_end = .;
. = ALIGN(4);
. = ALIGN(4);
.data :
{
__data_start__ = .;
*(.data)
*(.data*)
/* section information for initial. */
. = ALIGN(4);
__rt_init_start = .;
KEEP(*(SORT(.rti_fn*)))
__rt_init_end = .;
. = ALIGN(4);
. = ALIGN(4);
__data_end__ = .;
} > RAM AT> ROM
_etext = .;
} > CODE = 0
. = ALIGN(4);
/* .ARM.exidx is sorted, so has to go in its own output section. */
__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
/* This is used by the startup in order to initialize the .data secion */
_sidata = .;
} > CODE
__exidx_end = .;
/* .data section which is used for initialized data */
.data : AT (_sidata)
{
. = ALIGN(4);
/* This is used by the startup in order to initialize the .data secion */
_sdata = . ;
*(.data)
*(.data.*)
*(.gnu.linkonce.d*)
. = ALIGN(4);
/* This is used by the startup in order to initialize the .data secion */
_edata = . ;
} >DATA
.stack :
{
. = . + _system_stack_size;
. = ALIGN(4);
_estack = .;
} >DATA
__bss_start = .;
.bss :
{
__bss_start__ = .;
. = ALIGN(4);
/* This is used by the startup in order to initialize the .bss secion */
_sbss = .;
*(.bss)
*(.bss*)
*(.bss.*)
*(COMMON)
. = ALIGN(4);
__bss_end__ = .;
} > RAM
. = ALIGN(4);
/* This is used by the startup in order to initialize the .bss secion */
_ebss = . ;
*(.bss.init)
} > DATA
__bss_end = .;
.heap :
{
end = .;
__HeapBase = .;
_end = .;
*(.heap)
} > RAM
/* .stack_dummy section doesn't contains any symbols.
* It is only used for linker to calculate size of stack sections */
.stack_dummy :
{
*(.stack)
} > RAM
__StackTop = ORIGIN(RAM) + LENGTH(RAM);
__StackLimit = __StackTop - SIZEOF(.stack_dummy);
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
* Symbols in the DWARF debugging sections are relative to the beginning
* of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
}

View File

@@ -2,12 +2,12 @@
* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
* $Date: 31. July 2014
* $Revision: V1.4.4
* $Revision: V1.4.4
*
* Project: CMSIS DSP Library
* Title: arm_common_tables.h
* Project: CMSIS DSP Library
* Title: arm_common_tables.h
*
* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions
* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions
*
* Target Processor: Cortex-M4/Cortex-M3
*
@@ -85,14 +85,13 @@ extern const float32_t twiddleCoef_rfft_1024[1024];
extern const float32_t twiddleCoef_rfft_2048[2048];
extern const float32_t twiddleCoef_rfft_4096[4096];
/* floating-point bit reversal tables */
#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20 )
#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48 )
#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56 )
#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208 )
#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440 )
#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448 )
#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20)
#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48)
#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56)
#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208)
#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440)
#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448)
#define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800)
#define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808)
#define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032)
@@ -108,13 +107,13 @@ extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENG
extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH];
/* fixed-point bit reversal tables */
#define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12 )
#define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24 )
#define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56 )
#define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112 )
#define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240 )
#define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480 )
#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992 )
#define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12)
#define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24)
#define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56)
#define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112)
#define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240)
#define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480)
#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992)
#define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984)
#define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032)

View File

@@ -2,12 +2,12 @@
* Copyright (C) 2010-2014 ARM Limited. All rights reserved.
*
* $Date: 31. July 2014
* $Revision: V1.4.4
* $Revision: V1.4.4
*
* Project: CMSIS DSP Library
* Title: arm_const_structs.h
* Project: CMSIS DSP Library
* Title: arm_const_structs.h
*
* Description: This file has constant structs that are initialized for
* Description: This file has constant structs that are initialized for
* user convenience. For example, some can be given as
* arguments to the arm_cfft_f32() function.
*
@@ -46,34 +46,34 @@
#include "arm_math.h"
#include "arm_common_tables.h"
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048;
extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048;
extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048;
extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096;
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -79,7 +79,7 @@ __Vectors DCD __initial_sp ; Top of Stack
DCD GPIOA5_Handler
DCD GPIOA6_Handler
DCD GPIOA7_Handler
DCD GPIOB0_Handler
DCD GPIOB0_Handler
DCD GPIOB1_Handler
DCD GPIOB2_Handler
DCD GPIOB3_Handler
@@ -157,262 +157,262 @@ Reset_Handler PROC
; Dummy Exception Handlers (infinite loops which can be modified)
NMI_Handler PROC
EXPORT NMI_Handler [WEAK]
EXPORT NMI_Handler [WEAK]
B .
ENDP
HardFault_Handler PROC
EXPORT HardFault_Handler [WEAK]
EXPORT HardFault_Handler [WEAK]
B .
ENDP
MemManage_Handler PROC
EXPORT MemManage_Handler [WEAK]
EXPORT MemManage_Handler [WEAK]
B .
ENDP
BusFault_Handler PROC
EXPORT BusFault_Handler [WEAK]
EXPORT BusFault_Handler [WEAK]
B .
ENDP
UsageFault_Handler PROC
EXPORT UsageFault_Handler [WEAK]
EXPORT UsageFault_Handler [WEAK]
B .
ENDP
SVC_Handler PROC
EXPORT SVC_Handler [WEAK]
EXPORT SVC_Handler [WEAK]
B .
ENDP
DebugMon_Handler PROC
EXPORT DebugMon_Handler [WEAK]
EXPORT DebugMon_Handler [WEAK]
B .
ENDP
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
EXPORT SysTick_Handler [WEAK]
B .
ENDP
GPIOA0_Handler PROC
EXPORT GPIOA0_Handler [WEAK]
EXPORT GPIOA0_Handler [WEAK]
B .
ENDP
GPIOA1_Handler PROC
EXPORT GPIOA1_Handler [WEAK]
EXPORT GPIOA1_Handler [WEAK]
B .
ENDP
GPIOA2_Handler PROC
EXPORT GPIOA2_Handler [WEAK]
EXPORT GPIOA2_Handler [WEAK]
B .
ENDP
GPIOA3_Handler PROC
EXPORT GPIOA3_Handler [WEAK]
EXPORT GPIOA3_Handler [WEAK]
B .
ENDP
GPIOA4_Handler PROC
EXPORT GPIOA4_Handler [WEAK]
EXPORT GPIOA4_Handler [WEAK]
B .
ENDP
GPIOA5_Handler PROC
EXPORT GPIOA5_Handler [WEAK]
EXPORT GPIOA5_Handler [WEAK]
B .
ENDP
GPIOA6_Handler PROC
EXPORT GPIOA6_Handler [WEAK]
EXPORT GPIOA6_Handler [WEAK]
B .
ENDP
GPIOA7_Handler PROC
EXPORT GPIOA7_Handler [WEAK]
EXPORT GPIOA7_Handler [WEAK]
B .
ENDP
GPIOB0_Handler PROC
EXPORT GPIOB0_Handler [WEAK]
EXPORT GPIOB0_Handler [WEAK]
B .
ENDP
GPIOB1_Handler PROC
EXPORT GPIOB1_Handler [WEAK]
EXPORT GPIOB1_Handler [WEAK]
B .
ENDP
GPIOB2_Handler PROC
EXPORT GPIOB2_Handler [WEAK]
EXPORT GPIOB2_Handler [WEAK]
B .
ENDP
GPIOB3_Handler PROC
EXPORT GPIOB3_Handler [WEAK]
EXPORT GPIOB3_Handler [WEAK]
B .
ENDP
GPIOB4_Handler PROC
EXPORT GPIOB4_Handler [WEAK]
EXPORT GPIOB4_Handler [WEAK]
B .
ENDP
GPIOB5_Handler PROC
EXPORT GPIOB5_Handler [WEAK]
EXPORT GPIOB5_Handler [WEAK]
B .
ENDP
GPIOB6_Handler PROC
EXPORT GPIOB6_Handler [WEAK]
EXPORT GPIOB6_Handler [WEAK]
B .
ENDP
GPIOB7_Handler PROC
EXPORT GPIOB7_Handler [WEAK]
EXPORT GPIOB7_Handler [WEAK]
B .
ENDP
GPIOC0_Handler PROC
EXPORT GPIOC0_Handler [WEAK]
EXPORT GPIOC0_Handler [WEAK]
B .
ENDP
GPIOC1_Handler PROC
EXPORT GPIOC1_Handler [WEAK]
EXPORT GPIOC1_Handler [WEAK]
B .
ENDP
GPIOC2_Handler PROC
EXPORT GPIOC2_Handler [WEAK]
EXPORT GPIOC2_Handler [WEAK]
B .
ENDP
GPIOC3_Handler PROC
EXPORT GPIOC3_Handler [WEAK]
EXPORT GPIOC3_Handler [WEAK]
B .
ENDP
GPIOC4_Handler PROC
EXPORT GPIOC4_Handler [WEAK]
EXPORT GPIOC4_Handler [WEAK]
B .
ENDP
GPIOC5_Handler PROC
EXPORT GPIOC5_Handler [WEAK]
EXPORT GPIOC5_Handler [WEAK]
B .
ENDP
GPIOC6_Handler PROC
EXPORT GPIOC6_Handler [WEAK]
EXPORT GPIOC6_Handler [WEAK]
B .
ENDP
GPIOC7_Handler PROC
EXPORT GPIOC7_Handler [WEAK]
EXPORT GPIOC7_Handler [WEAK]
B .
ENDP
GPIOM0_Handler PROC
EXPORT GPIOM0_Handler [WEAK]
EXPORT GPIOM0_Handler [WEAK]
B .
ENDP
GPIOM1_Handler PROC
EXPORT GPIOM1_Handler [WEAK]
EXPORT GPIOM1_Handler [WEAK]
B .
ENDP
GPIOM2_Handler PROC
EXPORT GPIOM2_Handler [WEAK]
EXPORT GPIOM2_Handler [WEAK]
B .
ENDP
GPIOM3_Handler PROC
EXPORT GPIOM3_Handler [WEAK]
EXPORT GPIOM3_Handler [WEAK]
B .
ENDP
GPIOM4_Handler PROC
EXPORT GPIOM4_Handler [WEAK]
EXPORT GPIOM4_Handler [WEAK]
B .
ENDP
GPIOM5_Handler PROC
EXPORT GPIOM5_Handler [WEAK]
EXPORT GPIOM5_Handler [WEAK]
B .
ENDP
GPIOM6_Handler PROC
EXPORT GPIOM6_Handler [WEAK]
EXPORT GPIOM6_Handler [WEAK]
B .
ENDP
GPIOM7_Handler PROC
EXPORT GPIOM7_Handler [WEAK]
EXPORT GPIOM7_Handler [WEAK]
B .
ENDP
DMA_Handler PROC
EXPORT DMA_Handler [WEAK]
EXPORT DMA_Handler [WEAK]
B .
ENDP
LCD_Handler PROC
EXPORT LCD_Handler [WEAK]
EXPORT LCD_Handler [WEAK]
B .
ENDP
NORFLC_Handler PROC
EXPORT NORFLC_Handler [WEAK]
EXPORT NORFLC_Handler [WEAK]
B .
ENDP
CAN_Handler PROC
EXPORT CAN_Handler [WEAK]
EXPORT CAN_Handler [WEAK]
B .
ENDP
PULSE_Handler PROC
EXPORT PULSE_Handler [WEAK]
EXPORT PULSE_Handler [WEAK]
B .
ENDP
WDT_Handler PROC
EXPORT WDT_Handler [WEAK]
EXPORT WDT_Handler [WEAK]
B .
ENDP
PWM_Handler PROC
EXPORT PWM_Handler [WEAK]
EXPORT PWM_Handler [WEAK]
B .
ENDP
UART0_Handler PROC
EXPORT UART0_Handler [WEAK]
EXPORT UART0_Handler [WEAK]
B .
ENDP
UART1_Handler PROC
EXPORT UART1_Handler [WEAK]
EXPORT UART1_Handler [WEAK]
B .
ENDP
UART2_Handler PROC
EXPORT UART2_Handler [WEAK]
EXPORT UART2_Handler [WEAK]
B .
ENDP
UART3_Handler PROC
EXPORT UART3_Handler [WEAK]
EXPORT UART3_Handler [WEAK]
B .
ENDP
@@ -437,12 +437,12 @@ ADC0_Handler PROC
ENDP
RTC_Handler PROC
EXPORT RTC_Handler [WEAK]
EXPORT RTC_Handler [WEAK]
B .
ENDP
BOD_Handler PROC
EXPORT BOD_Handler [WEAK]
EXPORT BOD_Handler [WEAK]
B .
ENDP
@@ -452,32 +452,32 @@ SDIO_Handler PROC
ENDP
GPIOA_Handler PROC
EXPORT GPIOA_Handler [WEAK]
EXPORT GPIOA_Handler [WEAK]
B .
ENDP
GPIOB_Handler PROC
EXPORT GPIOB_Handler [WEAK]
EXPORT GPIOB_Handler [WEAK]
B .
ENDP
GPIOC_Handler PROC
EXPORT GPIOC_Handler [WEAK]
EXPORT GPIOC_Handler [WEAK]
B .
ENDP
GPIOM_Handler PROC
EXPORT GPIOM_Handler [WEAK]
EXPORT GPIOM_Handler [WEAK]
B .
ENDP
GPION_Handler PROC
EXPORT GPION_Handler [WEAK]
EXPORT GPION_Handler [WEAK]
B .
ENDP
GPIOP_Handler PROC
EXPORT GPIOP_Handler [WEAK]
EXPORT GPIOP_Handler [WEAK]
B .
ENDP
@@ -487,7 +487,7 @@ ADC1_Handler PROC
ENDP
FPU_Handler PROC
EXPORT FPU_Handler [WEAK]
EXPORT FPU_Handler [WEAK]
B .
ENDP

View File

@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
* 文件名称: system_SWM320.c
* 功能说明: SWM320单片机的时钟设置
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
/******************************************************************************************************************************************
* 文件名称: system_SWM320.c
* 功能说明: SWM320单片机的时钟设置
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
@@ -43,7 +43,8 @@
/********************************** PLL 设定 **********************************************
* VCO输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV
* PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV
* PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV
* 注意VCO输出频率需要在 [600MHz, 1200MHz] 之间
*****************************************************************************************/
#define SYS_PLL_SRC SYS_CLK_20MHz //可取值SYS_CLK_20MHz、SYS_CLK_XTAL
@@ -60,12 +61,12 @@
uint32_t SystemCoreClock = __HSI; //System Clock Frequency (Core Clock)
uint32_t CyclesPerUs = (__HSI / 1000000); //Cycles per micro second
/******************************************************************************************************************************************
* 函数名称:
/******************************************************************************************************************************************
* 函数名称:
* 功能说明: This function is used to update the variable SystemCoreClock and must be called whenever the core clock is changed
* 输 入:
* 输 出:
* 注意事项:
* 输 入:
* 输 出:
* 注意事项:
******************************************************************************************************************************************/
void SystemCoreClockUpdate(void)
{
@@ -114,12 +115,12 @@ void SystemCoreClockUpdate(void)
CyclesPerUs = SystemCoreClock / 1000000;
}
/******************************************************************************************************************************************
* 函数名称:
/******************************************************************************************************************************************
* 函数名称:
* 功能说明: The necessary initializaiton of systerm
* 输 入:
* 输 出:
* 注意事项:
* 输 入:
* 输 出:
* 注意事项:
******************************************************************************************************************************************/
void SystemInit(void)
{
@@ -173,15 +174,29 @@ void SystemInit(void)
}
}
void switchCLK_20MHz(void)
static void delay_3ms(void)
{
uint32_t i;
if (((SYS->CLKSEL & SYS_CLKSEL_SYS_Msk) == 0) &&
((SYS->CLKSEL & SYS_CLKSEL_LFCK_Msk) == 0)) //32KHz
{
for (i = 0; i < 20; i++)
__NOP();
}
else
{
for (i = 0; i < 20000; i++)
__NOP();
}
}
void switchCLK_20MHz(void)
{
SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
(0 << SYS_HRCCR_DBL_Pos); //HRC = 20MHz
for (i = 0; i < 1000; i++)
__NOP();
delay_3ms();
SYS->CLKSEL &= ~SYS_CLKSEL_HFCK_Msk; //HFCK <= HRC
SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK <= HFCK
@@ -189,13 +204,10 @@ void switchCLK_20MHz(void)
void switchCLK_40MHz(void)
{
uint32_t i;
SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
(1 << SYS_HRCCR_DBL_Pos); //HRC = 40MHz
for (i = 0; i < 1000; i++)
__NOP();
delay_3ms();
SYS->CLKSEL &= ~SYS_CLKSEL_HFCK_Msk; //HFCK <= HRC
SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK <= HFCK
@@ -203,14 +215,11 @@ void switchCLK_40MHz(void)
void switchCLK_32KHz(void)
{
uint32_t i;
SYS->CLKEN |= (1 << SYS_CLKEN_RTCBKP_Pos);
SYS->LRCCR &= ~(1 << SYS_LRCCR_OFF_Pos);
for (i = 0; i < 100; i++)
__NOP();
delay_3ms();
SYS->CLKSEL &= ~SYS_CLKSEL_LFCK_Msk; //LFCK <= LRC
SYS->CLKSEL &= ~SYS_CLKSEL_SYS_Msk; //SYS_CLK <= LFCK
@@ -218,12 +227,10 @@ void switchCLK_32KHz(void)
void switchCLK_XTAL(void)
{
uint32_t i;
SYS->XTALCR = (1 << SYS_XTALCR_EN_Pos);
for (i = 0; i < 1000; i++)
__NOP();
delay_3ms();
delay_3ms();
SYS->CLKSEL |= (1 << SYS_CLKSEL_HFCK_Pos); //HFCK <= XTAL
SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK <= HFCK
@@ -231,13 +238,9 @@ void switchCLK_XTAL(void)
void switchCLK_PLL(void)
{
uint32_t i;
PLLInit();
SYS->PLLCR |= (1 << SYS_PLLCR_OUTEN_Pos);
for (i = 0; i < 10000; i++)
__NOP();
SYS->PLLCR |= (1 << SYS_PLLCR_OUTEN_Pos);
SYS->CLKSEL |= (1 << SYS_CLKSEL_LFCK_Pos); //LFCK <= PLL
SYS->CLKSEL &= ~SYS_CLKSEL_SYS_Msk; //SYS_CLK <= LFCK
@@ -245,15 +248,12 @@ void switchCLK_PLL(void)
void PLLInit(void)
{
uint32_t i;
if (SYS_PLL_SRC == SYS_CLK_20MHz)
{
SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
(0 << SYS_HRCCR_DBL_Pos); //HRC = 20MHz
for (i = 0; i < 1000; i++)
__NOP();
delay_3ms();
SYS->PLLCR |= (1 << SYS_PLLCR_INSEL_Pos); //PLL_SRC <= HRC
}
@@ -261,8 +261,8 @@ void PLLInit(void)
{
SYS->XTALCR = (1 << SYS_XTALCR_EN_Pos);
for (i = 0; i < 20000; i++)
;
delay_3ms();
delay_3ms();
SYS->PLLCR &= ~(1 << SYS_PLLCR_INSEL_Pos); //PLL_SRC <= XTAL
}

View File

@@ -1,29 +1,29 @@
/******************************************************************************************************************************************
* 文件名称: SWM320_adc.c
* 功能说明: SWM320单片机的ADC数模转换器功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
/******************************************************************************************************************************************
* 文件名称: SWM320_adc.c
* 功能说明: SWM320单片机的ADC数模转换器功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_adc.h"
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: ADC_Init()
* 功能说明: ADC模数转换器初始化
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC有效值包括ADC0、ADC1
* ADC_InitStructure * initStruct 包含ADC各相关定值的结构体
* 功能说明: ADC模数转换器初始化
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC有效值包括ADC0、ADC1
* ADC_InitStructure * initStruct 包含ADC各相关定值的结构体
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -152,10 +152,10 @@ void ADC_Init(ADC_TypeDef *ADCx, ADC_InitStructure *initStruct)
}
}
/******************************************************************************************************************************************
* 函数名称: ADC_Open()
* 功能说明: ADC开启可以软件启动、或硬件触发ADC转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
/******************************************************************************************************************************************
* 函数名称: ADC_Open()
* 功能说明: ADC开启可以软件启动、或硬件触发ADC转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -164,10 +164,10 @@ void ADC_Open(ADC_TypeDef *ADCx)
ADCx->CTRL |= (0x01 << ADC_CTRL_EN_Pos);
}
/******************************************************************************************************************************************
* 函数名称: ADC_Close()
* 功能说明: ADC关闭无法软件启动、或硬件触发ADC转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
/******************************************************************************************************************************************
* 函数名称: ADC_Close()
* 功能说明: ADC关闭无法软件启动、或硬件触发ADC转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -176,10 +176,10 @@ void ADC_Close(ADC_TypeDef *ADCx)
ADCx->CTRL &= ~(0x01 << ADC_CTRL_EN_Pos);
}
/******************************************************************************************************************************************
* 函数名称: ADC_Start()
* 功能说明: 软件触发模式下启动ADC转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
/******************************************************************************************************************************************
* 函数名称: ADC_Start()
* 功能说明: 软件触发模式下启动ADC转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -188,10 +188,10 @@ void ADC_Start(ADC_TypeDef *ADCx)
ADCx->START |= (0x01 << ADC_START_GO_Pos);
}
/******************************************************************************************************************************************
* 函数名称: ADC_Stop()
* 功能说明: 软件触发模式下停止ADC转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
/******************************************************************************************************************************************
* 函数名称: ADC_Stop()
* 功能说明: 软件触发模式下停止ADC转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -235,12 +235,12 @@ static uint32_t chn2idx(uint32_t chn)
return idx;
}
/******************************************************************************************************************************************
* 函数名称: ADC_Read()
* 功能说明: 从指定通道读取转换结果
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要读取转换结果的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 读取到的转换结果
/******************************************************************************************************************************************
* 函数名称: ADC_Read()
* 功能说明: 从指定通道读取转换结果
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要读取转换结果的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 读取到的转换结果
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t ADC_Read(ADC_TypeDef *ADCx, uint32_t chn)
@@ -255,12 +255,12 @@ uint32_t ADC_Read(ADC_TypeDef *ADCx, uint32_t chn)
return dat;
}
/******************************************************************************************************************************************
* 函数名称: ADC_IsEOC()
* 功能说明: 指定通道是否End Of Conversion
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询状态的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
/******************************************************************************************************************************************
* 函数名称: ADC_IsEOC()
* 功能说明: 指定通道是否End Of Conversion
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询状态的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t ADC_IsEOC(ADC_TypeDef *ADCx, uint32_t chn)
@@ -270,11 +270,11 @@ uint32_t ADC_IsEOC(ADC_TypeDef *ADCx, uint32_t chn)
return (ADCx->CH[idx].STAT & ADC_STAT_EOC_Msk) ? 1 : 0;
}
/******************************************************************************************************************************************
* 函数名称: ADC_ChnSelect()
* 功能说明: ADC通道选通模数转换会在选通的通道上依次采样转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chns 要选通的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合即“按位或”运算
/******************************************************************************************************************************************
* 函数名称: ADC_ChnSelect()
* 功能说明: ADC通道选通模数转换会在选通的通道上依次采样转换
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chns 要选通的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合即“按位或”运算
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -284,11 +284,11 @@ void ADC_ChnSelect(ADC_TypeDef *ADCx, uint32_t chns)
ADCx->CTRL |= (chns << ADC_CTRL_CH0_Pos);
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCEn()
* 功能说明: 转换完成中断使能
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCEn()
* 功能说明: 转换完成中断使能
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -299,11 +299,11 @@ void ADC_IntEOCEn(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IE |= (0x01 << (idx * 4));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCDis()
* 功能说明: 转换完成中断禁止
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCDis()
* 功能说明: 转换完成中断禁止
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -314,11 +314,11 @@ void ADC_IntEOCDis(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IE &= ~(0x01 << (idx * 4));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCClr()
* 功能说明: 转换完成中断标志清除
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCClr()
* 功能说明: 转换完成中断标志清除
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -329,12 +329,12 @@ void ADC_IntEOCClr(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IF = (0x01 << (idx * 4));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCStat()
* 功能说明: 转换完成中断状态
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCStat()
* 功能说明: 转换完成中断状态
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t ADC_IntEOCStat(ADC_TypeDef *ADCx, uint32_t chn)
@@ -344,11 +344,11 @@ uint32_t ADC_IntEOCStat(ADC_TypeDef *ADCx, uint32_t chn)
return (ADCx->IF & (0x01 << (idx * 4))) ? 1 : 0;
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFEn()
* 功能说明: 数据溢出中断使能
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFEn()
* 功能说明: 数据溢出中断使能
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -359,11 +359,11 @@ void ADC_IntOVFEn(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IE |= (0x01 << (idx * 4 + 1));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFDis()
* 功能说明: 数据溢出中断禁止
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFDis()
* 功能说明: 数据溢出中断禁止
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -374,11 +374,11 @@ void ADC_IntOVFDis(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IE &= ~(0x01 << (idx * 4 + 1));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFClr()
* 功能说明: 数据溢出中断标志清除
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFClr()
* 功能说明: 数据溢出中断标志清除
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -389,12 +389,12 @@ void ADC_IntOVFClr(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IF = (0x01 << (idx * 4 + 1));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFStat()
* 功能说明: 数据溢出中断状态
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFStat()
* 功能说明: 数据溢出中断状态
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t ADC_IntOVFStat(ADC_TypeDef *ADCx, uint32_t chn)
@@ -404,11 +404,11 @@ uint32_t ADC_IntOVFStat(ADC_TypeDef *ADCx, uint32_t chn)
return (ADCx->IF & (0x01 << (idx * 4 + 1))) ? 1 : 0;
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLEn()
* 功能说明: FIFO半满中断使能
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLEn()
* 功能说明: FIFO半满中断使能
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -419,11 +419,11 @@ void ADC_IntHFULLEn(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IE |= (0x01 << (idx * 4 + 2));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLDis()
* 功能说明: FIFO半满中断禁止
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLDis()
* 功能说明: FIFO半满中断禁止
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -434,11 +434,11 @@ void ADC_IntHFULLDis(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IE &= ~(0x01 << (idx * 4 + 2));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLClr()
* 功能说明: FIFO半满中断标志清除
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLClr()
* 功能说明: FIFO半满中断标志清除
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -449,12 +449,12 @@ void ADC_IntHFULLClr(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IF = (0x01 << (idx * 4 + 2));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLStat()
* 功能说明: FIFO半满中断状态
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLStat()
* 功能说明: FIFO半满中断状态
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t ADC_IntHFULLStat(ADC_TypeDef *ADCx, uint32_t chn)
@@ -464,11 +464,11 @@ uint32_t ADC_IntHFULLStat(ADC_TypeDef *ADCx, uint32_t chn)
return (ADCx->IF & (0x01 << (idx * 4 + 2))) ? 1 : 0;
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLEn()
* 功能说明: FIFO满中断使能
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLEn()
* 功能说明: FIFO满中断使能
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -479,11 +479,11 @@ void ADC_IntFULLEn(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IE |= (0x01 << (idx * 4 + 3));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLDis()
* 功能说明: FIFO满中断禁止
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLDis()
* 功能说明: FIFO满中断禁止
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -494,11 +494,11 @@ void ADC_IntFULLDis(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IE &= ~(0x01 << (idx * 4 + 3));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLClr()
* 功能说明: FIFO满中断标志清除
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLClr()
* 功能说明: FIFO满中断标志清除
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要设置的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -509,12 +509,12 @@ void ADC_IntFULLClr(ADC_TypeDef *ADCx, uint32_t chn)
ADCx->IF = (0x01 << (idx * 4 + 3));
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLStat()
* 功能说明: FIFO满中断状态
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLStat()
* 功能说明: FIFO满中断状态
* 输 入: ADC_TypeDef * ADCx 指定要被设置的ADC可取值包括ADC
* uint32_t chn 要查询的通道有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
* 输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t ADC_IntFULLStat(ADC_TypeDef *ADCx, uint32_t chn)

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_crc.c
* 功能说明: SWM320单片机的CRC模块驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 功能说明: SWM320单片机的CRC模块驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
@@ -21,14 +21,14 @@
#include "SWM320.h"
#include "SWM320_crc.h"
/******************************************************************************************************************************************
* 函数名称: CRC_Init()
* 功能说明: CRC 初始化
* 输 入: CRC_TypeDef * CRCx 指定要被设置的CRC接口有效值包括CRC
* uint32_t mode 工作模式有效值有CRC32_IN32、CRC32_IN16、CRC32_IN8、CRC16_IN16、CRC16_IN8
* uint32_t out_not 输出结果是否取反
* uint32_t out_rev 输出结果是否翻转
* uint32_t ini_val CRC初始值
/******************************************************************************************************************************************
* 函数名称: CRC_Init()
* 功能说明: CRC 初始化
* 输 入: CRC_TypeDef * CRCx 指定要被设置的CRC接口有效值包括CRC
* uint32_t mode 工作模式有效值有CRC32_IN32、CRC32_IN16、CRC32_IN8、CRC16_IN16、CRC16_IN8
* uint32_t out_not 输出结果是否取反
* uint32_t out_rev 输出结果是否翻转
* uint32_t ini_val CRC初始值
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/

View File

@@ -9,10 +9,10 @@
void CRC_Init(CRC_TypeDef *CRCx, uint32_t mode, uint32_t out_not, uint32_t out_rev, uint32_t ini_val);
/******************************************************************************************************************************************
* 函数名称: CRC_Write()
* 功能说明: CRC写入数据
* 输 入: uint32_t data 要写入的数据
/******************************************************************************************************************************************
* 函数名称: CRC_Write()
* 功能说明: CRC写入数据
* 输 入: uint32_t data 要写入的数据
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -21,11 +21,11 @@ static __INLINE void CRC_Write(uint32_t data)
CRC->DATAIN = data;
}
/******************************************************************************************************************************************
* 函数名称: CRC_Result()
* 功能说明: 获取CRC计算结果
/******************************************************************************************************************************************
* 函数名称: CRC_Result()
* 功能说明: 获取CRC计算结果
* 输 入: 无
* 输 出: uint32_t CRC 计算结果
* 输 出: uint32_t CRC 计算结果
* 注意事项: 无
******************************************************************************************************************************************/
static __INLINE uint32_t CRC_Result(void)

View File

@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_dma.c
* 功能说明: SWM320单片机的DMA功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 功能说明: SWM320单片机的DMA功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
@@ -21,16 +21,16 @@
#include "SWM320.h"
#include "SWM320_dma.h"
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: DMA_CHM_Config()
* 功能说明: DMA通道配置用于存储器间如Flash和RAM间搬运数据
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* uint32_t src_addr 源地址必须字对齐即地址的最低2位必须是00
* uint32_t src_addr_incr 0 固定地址 1 地址递增
* uint32_t dst_addr 目的地址必须字对齐即地址的最低2位必须是00
* uint32_t dst_addr_incr 0 固定地址 1 地址递增
* uint32_t num_word 要搬运的数据字数最大1024
* uint32_t int_en 中断使能1 数据搬运完成后产生中断 0 数据搬运完成后不产生中断
* 功能说明: DMA通道配置用于存储器间如Flash和RAM间搬运数据
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* uint32_t src_addr 源地址必须字对齐即地址的最低2位必须是00
* uint32_t src_addr_incr 0 固定地址 1 地址递增
* uint32_t dst_addr 目的地址必须字对齐即地址的最低2位必须是00
* uint32_t dst_addr_incr 0 固定地址 1 地址递增
* uint32_t num_word 要搬运的数据字数最大1024
* uint32_t int_en 中断使能1 数据搬运完成后产生中断 0 数据搬运完成后不产生中断
* 输 出: 无
* 注意事项: 搬运数据量以字为单元,不是字节
******************************************************************************************************************************************/
@@ -67,10 +67,10 @@ void DMA_CHM_Config(uint32_t chn, uint32_t src_addr, uint32_t src_addr_incr, uin
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: DMA_CH_Open()
* 功能说明: DMA通道打开
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 功能说明: DMA通道打开
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -79,10 +79,10 @@ void DMA_CH_Open(uint32_t chn)
DMA->CH[chn].CR |= (1 << DMA_CR_TXEN_Pos);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: DMA_CH_Close()
* 功能说明: DMA通道关闭
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 功能说明: DMA通道关闭
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -91,10 +91,10 @@ void DMA_CH_Close(uint32_t chn)
DMA->CH[chn].CR &= ~(1 << DMA_CR_TXEN_Pos);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: DMA_CH_INTEn()
* 功能说明: DMA中断使能数据搬运完成后触发中断
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 功能说明: DMA中断使能数据搬运完成后触发中断
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -103,10 +103,10 @@ void DMA_CH_INTEn(uint32_t chn)
DMA->IM &= ~(1 << chn);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: DMA_CH_INTDis()
* 功能说明: DMA中断禁止数据搬运完成后不触发中断
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 功能说明: DMA中断禁止数据搬运完成后不触发中断
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -115,10 +115,10 @@ void DMA_CH_INTDis(uint32_t chn)
DMA->IM |= (1 << chn);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: DMA_CH_INTClr()
* 功能说明: DMA中断标志清除
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 功能说明: DMA中断标志清除
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -127,11 +127,11 @@ void DMA_CH_INTClr(uint32_t chn)
DMA->IF = (1 << chn);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: DMA_CH_INTStat()
* 功能说明: DMA中断状态查询
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 输 出: uint32_t 1 数据搬运完成 0 数据搬运未完成
* 功能说明: DMA中断状态查询
* 输 入: uint32_t chn 指定要配置的通道有效值有DMA_CH0、DMA_CH1、DMA_CH2
* 输 出: uint32_t 1 数据搬运完成 0 数据搬运未完成
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t DMA_CH_INTStat(uint32_t chn)

View File

@@ -1,34 +1,34 @@
/******************************************************************************************************************************************
* 文件名称: SWM320_exti.c
* 功能说明: SWM320单片机的外部中断功能驱动库
/******************************************************************************************************************************************
* 文件名称: SWM320_exti.c
* 功能说明: SWM320单片机的外部中断功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_exti.h"
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: EXTI_Init()
* 功能说明: 指定引脚外部中断初始化
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t mode 有效值有EXTI_FALL_EDGE、EXTI_RISE_EDGE、EXTI_BOTH_EDGE、EXTI_LOW_LEVEL、EXTI_HIGH_LEVEL
* 功能说明: 指定引脚外部中断初始化
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t mode 有效值有EXTI_FALL_EDGE、EXTI_RISE_EDGE、EXTI_BOTH_EDGE、EXTI_LOW_LEVEL、EXTI_HIGH_LEVEL
* 输 出: 无
* 注意事项: 由于GPIOA、GPIOB、GPIOC、GPIOM的PIN0--7引脚即可以接入NVIC中的引脚中断如GPIOA0_IRQn也可以接入NVIC的组中断GPIOA_IRQn
* 所以不在此函数中调用NVIC_EnableIRQ()使能NVIC中断从而可以根据需要调用NVIC_EnableIRQ(GPIOA0_IRQn)和NVIC_EnableIRQ(GPIOA_IRQn)
* 所以不在此函数中调用NVIC_EnableIRQ()使能NVIC中断从而可以根据需要调用NVIC_EnableIRQ(GPIOA0_IRQn)和NVIC_EnableIRQ(GPIOA_IRQn)
******************************************************************************************************************************************/
void EXTI_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t mode)
{
@@ -65,11 +65,11 @@ void EXTI_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t mode)
GPIOx->INTCLR = (1 << n); //清除掉因为模式配置可能产生的中断
}
/******************************************************************************************************************************************
* 函数名称: EXTI_Open()
* 功能说明: 指定引脚外部中断打开(即使能)
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
/******************************************************************************************************************************************
* 函数名称: EXTI_Open()
* 功能说明: 指定引脚外部中断打开(即使能)
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -78,11 +78,11 @@ void EXTI_Open(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->INTEN |= (0x01 << n);
}
/******************************************************************************************************************************************
* 函数名称: EXTI_Close()
* 功能说明: 指定引脚外部中断关闭(即禁能)
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
/******************************************************************************************************************************************
* 函数名称: EXTI_Close()
* 功能说明: 指定引脚外部中断关闭(即禁能)
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -91,12 +91,12 @@ void EXTI_Close(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->INTEN &= ~(0x01 << n);
}
/******************************************************************************************************************************************
* 函数名称: EXTI_State()
* 功能说明: 指定引脚是否触发了中断
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: uint32_t 1 此引脚触发了中断 0 此引脚未触发中断
/******************************************************************************************************************************************
* 函数名称: EXTI_State()
* 功能说明: 指定引脚是否触发了中断
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: uint32_t 1 此引脚触发了中断 0 此引脚未触发中断
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t EXTI_State(GPIO_TypeDef *GPIOx, uint32_t n)
@@ -104,12 +104,12 @@ uint32_t EXTI_State(GPIO_TypeDef *GPIOx, uint32_t n)
return (GPIOx->INTSTAT >> n) & 0x01;
}
/******************************************************************************************************************************************
* 函数名称: EXTI_RawState()
* 功能说明: 指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: uint32_t 1 此引脚满足过/了中断触发条件 0 此引脚未满足过/了中断触发条件
/******************************************************************************************************************************************
* 函数名称: EXTI_RawState()
* 功能说明: 指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: uint32_t 1 此引脚满足过/了中断触发条件 0 此引脚未满足过/了中断触发条件
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t EXTI_RawState(GPIO_TypeDef *GPIOx, uint32_t n)
@@ -117,11 +117,11 @@ uint32_t EXTI_RawState(GPIO_TypeDef *GPIOx, uint32_t n)
return (GPIOx->INTRAWSTAT >> n) & 0x01;
}
/******************************************************************************************************************************************
* 函数名称: EXTI_Clear()
* 功能说明: 指定引脚外部中断清除(即清除中断标志,以免再次进入此中断)
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
/******************************************************************************************************************************************
* 函数名称: EXTI_Clear()
* 功能说明: 指定引脚外部中断清除(即清除中断标志,以免再次进入此中断)
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定产生外部中断的GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: 无
* 注意事项: 只能清除边沿触发中断的标志,电平触发中断的标志无法清除,只能在引脚电平不符合中断触发条件后硬件自动清除
******************************************************************************************************************************************/

View File

@@ -1,20 +1,20 @@
/******************************************************************************************************************************************
* 文件名称: SWM320_flash.c
* 功能说明: 使用芯片的IAP功能将片上Flash模拟成EEPROM来保存数据掉电后不丢失
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
/******************************************************************************************************************************************
* 文件名称: SWM320_flash.c
* 功能说明: 使用芯片的IAP功能将片上Flash模拟成EEPROM来保存数据掉电后不丢失
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_flash.h"
@@ -24,10 +24,10 @@ IAP_Flash_Param_t IAP_Flash_Param = (IAP_Flash_Param_t)0x11000681;
IAP_Flash_Erase_t IAP_Flash_Erase = (IAP_Flash_Erase_t)0x11000781;
IAP_Flash_Write_t IAP_Flash_Write = (IAP_Flash_Write_t)0x11000801;
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: FLASH_Erase()
* 功能说明: 片内Flash擦除
* 输 入: uint32_t addr 擦除地址扇区大小为4K Byte
* 功能说明: 片内Flash擦除
* 输 入: uint32_t addr 擦除地址扇区大小为4K Byte
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -42,12 +42,12 @@ void FLASH_Erase(uint32_t addr)
__enable_irq();
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: FLASH_Write()
* 功能说明: 片内Flash写入
* 输 入: uint32_t addr 写入地址
* uint32_t buff[] 要写入的数据
* uint32_t count 要写入数据的个数以字为单位且必须是4的整数倍即最少写入4个字
* 功能说明: 片内Flash写入
* 输 入: uint32_t addr 写入地址
* uint32_t buff[] 要写入的数据
* uint32_t count 要写入数据的个数以字为单位且必须是4的整数倍即最少写入4个字
* 输 出: 无
* 注意事项: 写入数据个数必须是4的整数倍即最少写入4个字
******************************************************************************************************************************************/
@@ -62,10 +62,10 @@ void FLASH_Write(uint32_t addr, uint32_t buff[], uint32_t count)
__enable_irq();
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: Flash_Param_at_xMHz()
* 功能说明: 将Flash参数设置成xMHz主频下运行时所需的参数
* 输 入: uint32_t x 可取值
* 功能说明: 将Flash参数设置成xMHz主频下运行时所需的参数
* 输 入: uint32_t x 可取值
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/

View File

@@ -1,34 +1,34 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_gpio.c
* 功能说明: SWM320单片机的通用输入输出功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 功能说明: SWM320单片机的通用输入输出功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_gpio.h"
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: GPIO_Init()
* 功能说明: 引脚初始化,包含引脚方向、上拉电阻、下拉电阻、开漏输出
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t dir 引脚方向0 输入 1 输出
* uint32_t pull_up 上拉电阻0 关闭上拉 1 开启上拉
* uint32_t pull_down 下拉电阻0 关闭下拉 1 开启下拉
* 功能说明: 引脚初始化,包含引脚方向、上拉电阻、下拉电阻
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t dir 引脚方向0 输入 1 输出
* uint32_t pull_up 上拉电阻0 关闭上拉 1 开启上拉
* uint32_t pull_down 下拉电阻0 关闭下拉 1 开启下拉
* 输 出: 无
* 注意事项: GPIOA、GPIOC、GPIOM、GPIOP只有上拉GPIOB、GPION只有下拉PN0、PN1、PN2三个引脚有上拉没下拉
******************************************************************************************************************************************/
@@ -152,11 +152,11 @@ void GPIO_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t dir, uint32_t pull_up,
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: GPIO_SetBit()
* 功能说明: 将参数指定的引脚电平置高
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 功能说明: 将参数指定的引脚电平置高
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -165,11 +165,11 @@ void GPIO_SetBit(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->DATA |= (0x01 << n);
}
/******************************************************************************************************************************************
* 函数名称: GPIO_ClrBit()
* 功能说明: 将参数指定的引脚电平置低
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
/******************************************************************************************************************************************
* 函数名称: GPIO_ClrBit()
* 功能说明: 将参数指定的引脚电平置低
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -178,11 +178,11 @@ void GPIO_ClrBit(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->DATA &= ~(0x01 << n);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: GPIO_InvBit()
* 功能说明: 将参数指定的引脚电平反转
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 功能说明: 将参数指定的引脚电平反转
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -191,12 +191,12 @@ void GPIO_InvBit(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->DATA ^= (0x01 << n);
}
/******************************************************************************************************************************************
* 函数名称: GPIO_GetBit()
* 功能说明: 读取参数指定的引脚的电平状态
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: 参数指定的引脚的电平状态 0 低电平 1 高电平
/******************************************************************************************************************************************
* 函数名称: GPIO_GetBit()
* 功能说明: 读取参数指定的引脚的电平状态
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* 输 出: 参数指定的引脚的电平状态 0 低电平 1 高电平
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t GPIO_GetBit(GPIO_TypeDef *GPIOx, uint32_t n)
@@ -204,12 +204,12 @@ uint32_t GPIO_GetBit(GPIO_TypeDef *GPIOx, uint32_t n)
return ((GPIOx->DATA >> n) & 0x01);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: GPIO_SetBits()
* 功能说明: 将参数指定的从n开始的w位连续引脚的电平置高
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t w 指定要将引脚电平置高的引脚的个数
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t w 指定要将引脚电平置高的引脚的个数
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -222,12 +222,12 @@ void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
GPIOx->DATA |= (bits << n);
}
/******************************************************************************************************************************************
* 函数名称: GPIO_ClrBits()
/******************************************************************************************************************************************
* 函数名称: GPIO_ClrBits()
* 功能说明: 将参数指定的从n开始的w位连续引脚的电平置低
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t w 指定要将引脚电平置低的引脚的个数
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t w 指定要将引脚电平置低的引脚的个数
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -240,12 +240,12 @@ void GPIO_ClrBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
GPIOx->DATA &= ~(bits << n);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: GPIO_InvBits()
* 功能说明: 将参数指定的从n开始的w位连续引脚的电平反转
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t w 指定要将引脚电平反转的引脚的个数
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t w 指定要将引脚电平反转的引脚的个数
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -258,14 +258,14 @@ void GPIO_InvBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
GPIOx->DATA ^= (bits << n);
}
/******************************************************************************************************************************************
* 函数名称: GPIO_GetBits()
/******************************************************************************************************************************************
* 函数名称: GPIO_GetBits()
* 功能说明: 读取参数指定的从n开始的w位连续引脚的电平状态
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t w 指定要将引脚电平置高的引脚的个数
* 输 出: 参数指定的从n开始的w位连续引脚的电平状态 0 低电平 1 高电平
* 返回值的第0位表示引脚n的电平状态、返回值的第1位表示引脚n+1的电平状态... ...返回值的第w位表示引脚n+w的电平状态
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t w 指定要将引脚电平置高的引脚的个数
* 输 出: 参数指定的从n开始的w位连续引脚的电平状态 0 低电平 1 高电平
* 返回值的第0位表示引脚n的电平状态、返回值的第1位表示引脚n+1的电平状态... ...返回值的第w位表示引脚n+w的电平状态
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t GPIO_GetBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
@@ -277,11 +277,11 @@ uint32_t GPIO_GetBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
return ((GPIOx->DATA >> n) & bits);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: GPIO_AtomicSetBit()
* 功能说明: 将参数指定的引脚电平置高,确保引脚”读-改-写“操作的原子性不被中断ISR打断
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* 功能说明: 将参数指定的引脚电平置高,确保引脚”读-改-写“操作的原子性不被中断ISR打断
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* 输 出: 无
* 注意事项: 当GPIOx的16个引脚中有些在主循环中操作有些在中断ISR中操作时GPIOx的引脚必须都用GPIO_Atomic类型函数操作
******************************************************************************************************************************************/
@@ -290,11 +290,11 @@ void GPIO_AtomicSetBit(GPIO_TypeDef *GPIOx, uint32_t n)
*((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4)) = 1;
}
/******************************************************************************************************************************************
* 函数名称: GPIO_AtomicClrBit()
* 功能说明: 将参数指定的引脚电平置低,确保引脚”读-改-写“操作的原子性不被中断ISR打断
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
/******************************************************************************************************************************************
* 函数名称: GPIO_AtomicClrBit()
* 功能说明: 将参数指定的引脚电平置低,确保引脚”读-改-写“操作的原子性不被中断ISR打断
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* 输 出: 无
* 注意事项: 当GPIOx的16个引脚中有些在主循环中操作有些在中断ISR中操作时GPIOx的引脚必须都用GPIO_Atomic类型函数操作
******************************************************************************************************************************************/
@@ -303,11 +303,11 @@ void GPIO_AtomicClrBit(GPIO_TypeDef *GPIOx, uint32_t n)
*((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4)) = 0;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: GPIO_AtomicInvBit()
* 功能说明: 将参数指定的引脚电平反转,确保引脚”读-改-写“操作的原子性不被中断ISR打断
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* 功能说明: 将参数指定的引脚电平反转,确保引脚”读-改-写“操作的原子性不被中断ISR打断
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* 输 出: 无
* 注意事项: 当GPIOx的16个引脚中有些在主循环中操作有些在中断ISR中操作时GPIOx的引脚必须都用GPIO_Atomic类型函数操作
******************************************************************************************************************************************/
@@ -316,12 +316,12 @@ void GPIO_AtomicInvBit(GPIO_TypeDef *GPIOx, uint32_t n)
*((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4)) = 1 - *((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4));
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: GPIO_AtomicSetBits()
* 功能说明: 将参数指定的从n开始的w位连续引脚的电平置高确保引脚”读-改-写“操作的原子性不被中断ISR打断
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* uint32_t w 指定要将引脚电平置高的引脚的个数
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* uint32_t w 指定要将引脚电平置高的引脚的个数
* 输 出: 无
* 注意事项: 当GPIOx的16个引脚中有些在主循环中操作有些在中断ISR中操作时GPIOx的引脚必须都用GPIO_Atomic类型函数操作
******************************************************************************************************************************************/
@@ -336,12 +336,12 @@ void GPIO_AtomicSetBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
__enable_irq();
}
/******************************************************************************************************************************************
* 函数名称: GPIO_AtomicClrBits()
/******************************************************************************************************************************************
* 函数名称: GPIO_AtomicClrBits()
* 功能说明: 将参数指定的从n开始的w位连续引脚的电平置低确保引脚”读-改-写“操作的原子性不被中断ISR打断
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* uint32_t w 指定要将引脚电平置低的引脚的个数
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* uint32_t w 指定要将引脚电平置低的引脚的个数
* 输 出: 无
* 注意事项: 当GPIOx的16个引脚中有些在主循环中操作有些在中断ISR中操作时GPIOx的引脚必须都用GPIO_Atomic类型函数操作
******************************************************************************************************************************************/
@@ -356,12 +356,12 @@ void GPIO_AtomicClrBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
__enable_irq();
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: GPIO_AtomicInvBits()
* 功能说明: 将参数指定的从n开始的w位连续引脚的电平反转确保引脚”读-改-写“操作的原子性不被中断ISR打断
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* uint32_t w 指定要将引脚电平反转的引脚的个数
* 输 入: GPIO_TypeDef * GPIOx 指定GPIO端口有效值包括GPIOA、GPIOB、GPIOC、GPIOD
* uint32_t n 指定GPIO引脚有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
* uint32_t w 指定要将引脚电平反转的引脚的个数
* 输 出: 无
* 注意事项: 当GPIOx的16个引脚中有些在主循环中操作有些在中断ISR中操作时GPIOx的引脚必须都用GPIO_Atomic类型函数操作
******************************************************************************************************************************************/

View File

@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
* 文件名称: SWM320_i2c.c
* 功能说明: SWM320单片机的I2C串行接口功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
/******************************************************************************************************************************************
* 文件名称: SWM320_i2c.c
* 功能说明: SWM320单片机的I2C串行接口功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIES AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIEE. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIES ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIES AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIEE. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIES ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
@@ -21,11 +21,11 @@
#include "SWM320.h"
#include "SWM320_i2c.h"
/******************************************************************************************************************************************
* 函数名称: I2C_Init()
* 功能说明: I2C初始化
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* I2C_InitStructure * initStruct 包含I2C相关设定值的结构体
/******************************************************************************************************************************************
* 函数名称: I2C_Init()
* 功能说明: I2C初始化
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* I2C_InitStructure * initStruct 包含I2C相关设定值的结构体
* 输 出: 无
* 注意事项: 模块只能工作于主机模式
******************************************************************************************************************************************/
@@ -125,10 +125,10 @@ void I2C_Init(I2C_TypeDef *I2Cx, I2C_InitStructure *initStruct)
}
}
/******************************************************************************************************************************************
* 函数名称: I2C_Open()
* 功能说明: I2C打开允许收发
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
/******************************************************************************************************************************************
* 函数名称: I2C_Open()
* 功能说明: I2C打开允许收发
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -137,10 +137,10 @@ void I2C_Open(I2C_TypeDef *I2Cx)
I2Cx->CTRL |= (0x01 << I2C_CTRL_EN_Pos);
}
/******************************************************************************************************************************************
* 函数名称: I2C_Close()
* 功能说明: I2C关闭禁止收发
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
/******************************************************************************************************************************************
* 函数名称: I2C_Close()
* 功能说明: I2C关闭禁止收发
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -149,12 +149,12 @@ void I2C_Close(I2C_TypeDef *I2Cx)
I2Cx->CTRL &= ~I2C_CTRL_EN_Msk;
}
/******************************************************************************************************************************************
* 函数名称: I2C_Start()
* 功能说明: 产生起始信号并发送设备地址
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* uint8_t addr 设备地址
* 输 出: uint8_t 1 接收到ACK 0 接收到NACK
/******************************************************************************************************************************************
* 函数名称: I2C_Start()
* 功能说明: 产生起始信号并发送设备地址
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* uint8_t addr 设备地址
* 输 出: uint8_t 1 接收到ACK 0 接收到NACK
* 注意事项: 无
******************************************************************************************************************************************/
uint8_t I2C_Start(I2C_TypeDef *I2Cx, uint8_t addr)
@@ -168,10 +168,10 @@ uint8_t I2C_Start(I2C_TypeDef *I2Cx, uint8_t addr)
return (I2Cx->MSTCMD & I2C_MSTCMD_RXACK_Msk) ? 0 : 1;
}
/******************************************************************************************************************************************
* 函数名称: I2C_Stop()
* 功能说明: 产生停止信号
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
/******************************************************************************************************************************************
* 函数名称: I2C_Stop()
* 功能说明: 产生停止信号
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -182,12 +182,12 @@ void I2C_Stop(I2C_TypeDef *I2Cx)
__NOP(); //等待发送完成
}
/******************************************************************************************************************************************
* 函数名称: I2C_Write()
* 功能说明: 写入一个数据
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* uint8_t data 要写的数据
* 输 出: uint8_t 1 接收到ACK 0 接收到NACK
/******************************************************************************************************************************************
* 函数名称: I2C_Write()
* 功能说明: 写入一个数据
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* uint8_t data 要写的数据
* 输 出: uint8_t 1 接收到ACK 0 接收到NACK
* 注意事项: 无
******************************************************************************************************************************************/
uint8_t I2C_Write(I2C_TypeDef *I2Cx, uint8_t data)
@@ -200,12 +200,12 @@ uint8_t I2C_Write(I2C_TypeDef *I2Cx, uint8_t data)
return (I2Cx->MSTCMD & I2C_MSTCMD_RXACK_Msk) ? 0 : 1;
}
/******************************************************************************************************************************************
* 函数名称: I2C_Read()
* 功能说明: 读取一个数据
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* uint8_t ack 1 发送ACK 0 发送NACK
* 输 出: uint8_t 读取到的数据
/******************************************************************************************************************************************
* 函数名称: I2C_Read()
* 功能说明: 读取一个数据
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C有效值包括I2C0、I2C1
* uint8_t ack 1 发送ACK 0 发送NACK
* 输 出: uint8_t 读取到的数据
* 注意事项: 无
******************************************************************************************************************************************/
uint8_t I2C_Read(I2C_TypeDef *I2Cx, uint8_t ack)

View File

@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_lcd.c
* 功能说明: SWM320单片机的LCD功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 功能说明: SWM320单片机的LCD功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
@@ -23,11 +23,11 @@
#include <string.h>
/******************************************************************************************************************************************
* 函数名称: LCD_Init()
* 功能说明: LCD初始化
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* LCD_InitStructure * initStruct 包含LCD相关设定值的结构体
/******************************************************************************************************************************************
* 函数名称: LCD_Init()
* 功能说明: LCD初始化
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* LCD_InitStructure * initStruct 包含LCD相关设定值的结构体
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -74,10 +74,10 @@ void LCD_Init(LCD_TypeDef *LCDx, LCD_InitStructure *initStruct)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_Start()
* 功能说明: 启动一次数据传输
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 功能说明: 启动一次数据传输
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -86,11 +86,11 @@ void LCD_Start(LCD_TypeDef *LCDx)
LCDx->START |= (1 << LCD_START_GO_Pos) | (1 << LCD_START_BURST_Pos);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_IsBusy()
* 功能说明: 是否正在进行数据传输
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 输 出: uint32_t 1 正在传输数据 0 数据传输已完成
* 功能说明: 是否正在进行数据传输
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 输 出: uint32_t 1 正在传输数据 0 数据传输已完成
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t LCD_IsBusy(LCD_TypeDef *LCDx)
@@ -98,10 +98,10 @@ uint32_t LCD_IsBusy(LCD_TypeDef *LCDx)
return (LCDx->START & LCD_START_GO_Msk) ? 1 : 0;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_INTEn()
* 功能说明: LCD中断使能完成指定长度的数据传输时触发中断
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 功能说明: LCD中断使能完成指定长度的数据传输时触发中断
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -110,10 +110,10 @@ void LCD_INTEn(LCD_TypeDef *LCDx)
LCDx->IM = 0;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_INTDis()
* 功能说明: LCD中断禁止完成指定长度的数据传输时不触发中断
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 功能说明: LCD中断禁止完成指定长度的数据传输时不触发中断
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -122,10 +122,10 @@ void LCD_INTDis(LCD_TypeDef *LCDx)
LCDx->IM = 1;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_INTClr()
* 功能说明: LCD中断标志清除
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 功能说明: LCD中断标志清除
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -134,11 +134,11 @@ void LCD_INTClr(LCD_TypeDef *LCDx)
LCDx->IF = 1;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_INTStat()
* 功能说明: LCD中断状态查询
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 输 出: uint32_t 1 完成指定长度的数据传输 0 未完成指定长度的数据传输
* 功能说明: LCD中断状态查询
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD有效值包括LCD
* 输 出: uint32_t 1 完成指定长度的数据传输 0 未完成指定长度的数据传输
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t LCD_INTStat(LCD_TypeDef *LCDx)

View File

@@ -1,29 +1,29 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_norflash.c
* 功能说明: SWM320单片机的NOR Flash驱动程序
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 功能说明: SWM320单片机的NOR Flash驱动程序
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_norflash.h"
/******************************************************************************************************************************************
* 函数名称: NORFL_Init()
* 功能说明: NOR Flash控制器初始化
/******************************************************************************************************************************************
* 函数名称: NORFL_Init()
* 功能说明: NOR Flash控制器初始化
* 输 入: NORFL_InitStructure * initStruct 包含NOR Flash控制器相关设定值的结构体
* 输 出: 无
* 注意事项: 无
@@ -64,11 +64,11 @@ void NORFL_Init(NORFL_InitStructure *initStruct)
NORFLC->IM |= (1 << NORFLC_IM_TIMEOUT_Pos);
}
/******************************************************************************************************************************************
* 函数名称: NORFL_ChipErase()
* 功能说明: NOR Flash整片擦除
/******************************************************************************************************************************************
* 函数名称: NORFL_ChipErase()
* 功能说明: NOR Flash整片擦除
* 输 入: 无
* 输 出: uint32_t 0 擦除成功 1 擦除超时
* 输 出: uint32_t 0 擦除成功 1 擦除超时
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t NORFL_ChipErase(void)
@@ -91,11 +91,11 @@ uint32_t NORFL_ChipErase(void)
return res;
}
/******************************************************************************************************************************************
* 函数名称: NORFL_SectorErase()
* 功能说明: NOR Flash扇区擦除
* 输 入: uint32_t addr 要擦除扇区的起始地址
* 输 出: uint32_t 0 擦除成功 1 擦除超时
/******************************************************************************************************************************************
* 函数名称: NORFL_SectorErase()
* 功能说明: NOR Flash扇区擦除
* 输 入: uint32_t addr 要擦除扇区的起始地址
* 输 出: uint32_t 0 擦除成功 1 擦除超时
* 注意事项: MX29LV128DB 前8扇区为8K、后255扇区为64K MX29LV128DT 前255扇区为64K、后8扇区为8K
******************************************************************************************************************************************/
uint32_t NORFL_SectorErase(uint32_t addr)
@@ -119,12 +119,12 @@ uint32_t NORFL_SectorErase(uint32_t addr)
return res;
}
/******************************************************************************************************************************************
* 函数名称: NORFL_Write()
* 功能说明: NOR Flash写
* 输 入: uint32_t addr 数据要写入的地址
* uint32_t data 要写入的数据
* 输 出: uint32_t 0 写入成功 1 写入超时
/******************************************************************************************************************************************
* 函数名称: NORFL_Write()
* 功能说明: NOR Flash写
* 输 入: uint32_t addr 数据要写入的地址
* uint32_t data 要写入的数据
* 输 出: uint32_t 0 写入成功 1 写入超时
* 注意事项: 硬件连接数据线为16位时半字写入数据线为8位时字节写入
******************************************************************************************************************************************/
uint32_t NORFL_Write(uint32_t addr, uint32_t data)
@@ -148,11 +148,11 @@ uint32_t NORFL_Write(uint32_t addr, uint32_t data)
return res;
}
/******************************************************************************************************************************************
* 函数名称: NORFL_Read()
* 功能说明: NOR Flash读
* 输 入: uint32_t addr 数据要读出的地址
* 输 出: uint32_t 读出的数据
/******************************************************************************************************************************************
* 函数名称: NORFL_Read()
* 功能说明: NOR Flash读
* 输 入: uint32_t addr 数据要读出的地址
* 输 出: uint32_t 读出的数据
* 注意事项: 硬件连接数据线为16位时半字读出数据线为8位时字节读出
******************************************************************************************************************************************/
uint32_t NORFL_Read(uint32_t addr)
@@ -163,11 +163,11 @@ uint32_t NORFL_Read(uint32_t addr)
return (NORFLC->CMD & NORFLC_CMD_DATA_Msk);
}
/******************************************************************************************************************************************
* 函数名称: NORFL_ReadID()
* 功能说明: NOR Flash读ID
* 输 入: uint32_t id_addr ID地址此参数是芯片相关的每种芯片都不同
* 输 出: uint16_t 读取到的ID
/******************************************************************************************************************************************
* 函数名称: NORFL_ReadID()
* 功能说明: NOR Flash读ID
* 输 入: uint32_t id_addr ID地址此参数是芯片相关的每种芯片都不同
* 输 出: uint16_t 读取到的ID
* 注意事项: 无
******************************************************************************************************************************************/
uint16_t NORFL_ReadID(uint32_t id_addr)

View File

@@ -20,8 +20,8 @@ uint32_t NORFL_Read(uint32_t addr);
uint16_t NORFL_ReadID(uint32_t id_addr);
/* 当前版本总线读只支持字读
#define NORFL_Read8(addr) *((volatile uint8_t *)(NORFLM_BASE + addr))
#define NORFL_Read16(addr) *((volatile uint16_t *)(NORFLM_BASE + addr)) */
#define NORFL_Read8(addr) *((volatile uint8_t *)(NORFLM_BASE + addr))
#define NORFL_Read16(addr) *((volatile uint16_t *)(NORFLM_BASE + addr)) */
#define NORFL_Read32(addr) *((volatile uint32_t *)(NORFLM_BASE + addr))
#define NORFL_CMD_READ 0

View File

@@ -1,36 +1,36 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_port.c
* 功能说明: SWM320单片机的端口引脚功能选择库函数
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 功能说明: SWM320单片机的端口引脚功能选择库函数
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_port.h"
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: PORT_Init()
* 功能说明: 端口引脚功能选择,可用的功能见"SWM320_port.h"文件
* 输 入: uint32_t PORTx 指定PORT端口有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、PORTP
* uint32_t n 指定PORT引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t func 指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
* uint32_t digit_in_en 数字输入使能
* 功能说明: 端口引脚功能选择,可用的功能见"SWM320_port.h"文件
* 输 入: uint32_t PORTx 指定PORT端口有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、PORTP
* uint32_t n 指定PORT引脚有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t func 指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
* uint32_t digit_in_en 数字输入使能
* 输 出: 无
* 注意事项: 当引脚标号n为偶数时func取值只能是FUNMUX0开头的如FUNMUX0_UART0_RXD
* 当引脚标号n为奇数时func取值只能是FUNMUX1开头的如FUNMUX1_UART0_TXD
* 当引脚标号n为奇数时func取值只能是FUNMUX1开头的如FUNMUX1_UART0_TXD
******************************************************************************************************************************************/
void PORT_Init(uint32_t PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en)
{

View File

@@ -1,31 +1,31 @@
/******************************************************************************************************************************************
* 文件名称: SWM320_pwm.c
* 功能说明: SWM320单片机的PWM功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
/******************************************************************************************************************************************
* 文件名称: SWM320_pwm.c
* 功能说明: SWM320单片机的PWM功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_pwm.h"
/******************************************************************************************************************************************
* 函数名称: PWM_Init()
* 功能说明: PWM初始化
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* PWM_InitStructure * initStruct 包含PWM相关设定值的结构体
/******************************************************************************************************************************************
* 函数名称: PWM_Init()
* 功能说明: PWM初始化
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* PWM_InitStructure * initStruct 包含PWM相关设定值的结构体
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -98,12 +98,12 @@ void PWM_Init(PWM_TypeDef *PWMx, PWM_InitStructure *initStruct)
}
}
/******************************************************************************************************************************************
* 函数名称: PWM_Start()
* 功能说明: 启动PWM开始PWM输出
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chA 0 通道A不启动 1 通道A启动
* uint32_t chB 0 通道B不启动 1 通道B启动
/******************************************************************************************************************************************
* 函数名称: PWM_Start()
* 功能说明: 启动PWM开始PWM输出
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chA 0 通道A不启动 1 通道A启动
* uint32_t chB 0 通道B不启动 1 通道B启动
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -137,12 +137,12 @@ void PWM_Start(PWM_TypeDef *PWMx, uint32_t chA, uint32_t chB)
}
}
/******************************************************************************************************************************************
* 函数名称: PWM_Stop()
* 功能说明: 关闭PWM停止PWM输出
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chA 0 通道A不关闭 1 通道A关闭
* uint32_t chB 0 通道B不关闭 1 通道B关闭
/******************************************************************************************************************************************
* 函数名称: PWM_Stop()
* 功能说明: 关闭PWM停止PWM输出
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chA 0 通道A不关闭 1 通道A关闭
* uint32_t chB 0 通道B不关闭 1 通道B关闭
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -176,12 +176,12 @@ void PWM_Stop(PWM_TypeDef *PWMx, uint32_t chA, uint32_t chB)
}
}
/******************************************************************************************************************************************
* 函数名称: PWM_SetCycle()
* 功能说明: 设置周期
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* uint16_t cycle 要设定的周期值
/******************************************************************************************************************************************
* 函数名称: PWM_SetCycle()
* 功能说明: 设置周期
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* uint16_t cycle 要设定的周期值
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -193,12 +193,12 @@ void PWM_SetCycle(PWM_TypeDef *PWMx, uint32_t chn, uint16_t cycle)
PWMx->PERB = cycle;
}
/******************************************************************************************************************************************
* 函数名称: PWM_GetCycle()
* 功能说明: 获取周期
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要查询哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint16_t 获取到的周期值
/******************************************************************************************************************************************
* 函数名称: PWM_GetCycle()
* 功能说明: 获取周期
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要查询哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint16_t 获取到的周期值
* 注意事项: 无
******************************************************************************************************************************************/
uint16_t PWM_GetCycle(PWM_TypeDef *PWMx, uint32_t chn)
@@ -213,12 +213,12 @@ uint16_t PWM_GetCycle(PWM_TypeDef *PWMx, uint32_t chn)
return cycle;
}
/******************************************************************************************************************************************
* 函数名称: PWM_SetHDuty()
* 功能说明: 设置高电平时长
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* uint16_t hduty 要设定的高电平时长
/******************************************************************************************************************************************
* 函数名称: PWM_SetHDuty()
* 功能说明: 设置高电平时长
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* uint16_t hduty 要设定的高电平时长
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -230,12 +230,12 @@ void PWM_SetHDuty(PWM_TypeDef *PWMx, uint32_t chn, uint16_t hduty)
PWMx->HIGHB = hduty;
}
/******************************************************************************************************************************************
* 函数名称: PWM_GetHDuty()
/******************************************************************************************************************************************
* 函数名称: PWM_GetHDuty()
* 功能说明: 获取高电平时长
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要查询哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint16_t 获取到的高电平时长
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要查询哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint16_t 获取到的高电平时长
* 注意事项: 无
******************************************************************************************************************************************/
uint16_t PWM_GetHDuty(PWM_TypeDef *PWMx, uint32_t chn)
@@ -250,12 +250,12 @@ uint16_t PWM_GetHDuty(PWM_TypeDef *PWMx, uint32_t chn)
return hduty;
}
/******************************************************************************************************************************************
* 函数名称: PWM_SetDeadzone()
* 功能说明: 设置死区时长
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* uint8_t deadzone 要设定的死区时长
/******************************************************************************************************************************************
* 函数名称: PWM_SetDeadzone()
* 功能说明: 设置死区时长
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* uint8_t deadzone 要设定的死区时长
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -267,12 +267,12 @@ void PWM_SetDeadzone(PWM_TypeDef *PWMx, uint32_t chn, uint8_t deadzone)
PWMx->DZB = deadzone;
}
/******************************************************************************************************************************************
* 函数名称: PWM_GetDeadzone()
/******************************************************************************************************************************************
* 函数名称: PWM_GetDeadzone()
* 功能说明: 获取死区时长
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要查询哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint8_t 获取到的死区时长
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要查询哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint8_t 获取到的死区时长
* 注意事项: 无
******************************************************************************************************************************************/
uint8_t PWM_GetDeadzone(PWM_TypeDef *PWMx, uint32_t chn)
@@ -287,11 +287,11 @@ uint8_t PWM_GetDeadzone(PWM_TypeDef *PWMx, uint32_t chn)
return deadzone;
}
/******************************************************************************************************************************************
* 函数名称: PWM_IntNCycleEn()
/******************************************************************************************************************************************
* 函数名称: PWM_IntNCycleEn()
* 功能说明: 新周期开始中断使能
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -343,11 +343,11 @@ void PWM_IntNCycleEn(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* 函数名称: PWM_IntNCycleDis()
/******************************************************************************************************************************************
* 函数名称: PWM_IntNCycleDis()
* 功能说明: 新周期开始中断禁能
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -399,11 +399,11 @@ void PWM_IntNCycleDis(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* 函数名称: PWM_IntNCycleClr()
/******************************************************************************************************************************************
* 函数名称: PWM_IntNCycleClr()
* 功能说明: 新周期开始中断标志清除
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -455,12 +455,12 @@ void PWM_IntNCycleClr(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* 函数名称: PWM_IntNCycleStat()
/******************************************************************************************************************************************
* 函数名称: PWM_IntNCycleStat()
* 功能说明: 新周期开始中断是否发生
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint32_t 1 新周期开始中断已发生 0 新周期开始中断未发生
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint32_t 1 新周期开始中断已发生 0 新周期开始中断未发生
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t PWM_IntNCycleStat(PWM_TypeDef *PWMx, uint32_t chn)
@@ -515,11 +515,11 @@ uint32_t PWM_IntNCycleStat(PWM_TypeDef *PWMx, uint32_t chn)
return int_stat;
}
/******************************************************************************************************************************************
* 函数名称: PWM_IntHEndEn()
/******************************************************************************************************************************************
* 函数名称: PWM_IntHEndEn()
* 功能说明: 高电平结束中断使能
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -571,11 +571,11 @@ void PWM_IntHEndEn(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* 函数名称: PWM_IntHEndDis()
/******************************************************************************************************************************************
* 函数名称: PWM_IntHEndDis()
* 功能说明: 高电平结束中断禁能
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -627,11 +627,11 @@ void PWM_IntHEndDis(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* 函数名称: PWM_IntHEndClr()
/******************************************************************************************************************************************
* 函数名称: PWM_IntHEndClr()
* 功能说明: 高电平结束中断标志清除
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -683,12 +683,12 @@ void PWM_IntHEndClr(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* 函数名称: PWM_IntHEndStat()
/******************************************************************************************************************************************
* 函数名称: PWM_IntHEndStat()
* 功能说明: 高电平结束中断是否发生
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint32_t 1 高电平结束中断已发生 0 高电平结束中断未发生
* 输 入: PWM_TypeDef * PWMx 指定要被设置的PWM有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn 选择要设置哪个通道有效值PWM_CH_A、PWM_CH_B
* 输 出: uint32_t 1 高电平结束中断已发生 0 高电平结束中断未发生
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t PWM_IntHEndStat(PWM_TypeDef *PWMx, uint32_t chn)

View File

@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_rtc.c
* 功能说明: SWM320单片机的RTC驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 功能说明: SWM320单片机的RTC驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
@@ -22,11 +22,11 @@
#include "SWM320_rtc.h"
static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date);
/******************************************************************************************************************************************
* 函数名称: RTC_Init()
* 功能说明: RTC初始化
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC有效值包括RTC
* RTC_InitStructure * initStruct 包含RTC相关设定值的结构体
/******************************************************************************************************************************************
* 函数名称: RTC_Init()
* 功能说明: RTC初始化
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC有效值包括RTC
* RTC_InitStructure * initStruct 包含RTC相关设定值的结构体
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -53,7 +53,7 @@ void RTC_Init(RTC_TypeDef *RTCx, RTC_InitStructure *initStruct)
RTCx->MONDAY = (calcWeekDay(initStruct->Year, initStruct->Month, initStruct->Date) << RTC_MONDAY_DAY_Pos) |
(initStruct->Month << RTC_MONDAY_MON_Pos);
RTCx->YEAR = initStruct->Year - 1901;
RTCx->YEAR = initStruct->Year;
RTCx->LOAD = 1 << RTC_LOAD_TIME_Pos;
@@ -71,10 +71,10 @@ void RTC_Init(RTC_TypeDef *RTCx, RTC_InitStructure *initStruct)
}
}
/******************************************************************************************************************************************
* 函数名称: RTC_Start()
* 功能说明: 启动RTC
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_Start()
* 功能说明: 启动RTC
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -83,10 +83,10 @@ void RTC_Start(RTC_TypeDef *RTCx)
RTCx->EN = 1;
}
/******************************************************************************************************************************************
* 函数名称: RTC_Stop()
* 功能说明: 停止RTC
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_Stop()
* 功能说明: 停止RTC
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -95,17 +95,17 @@ void RTC_Stop(RTC_TypeDef *RTCx)
RTCx->EN = 0;
}
/******************************************************************************************************************************************
* 函数名称: RTC_GetDateTime()
* 功能说明: 获取当前的时间和日期
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC有效值包括RTC
* RTC_DateTime * dateTime 获取到的时间、日期值存入此指针指向的结构体
/******************************************************************************************************************************************
* 函数名称: RTC_GetDateTime()
* 功能说明: 获取当前的时间和日期
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC有效值包括RTC
* RTC_DateTime * dateTime 获取到的时间、日期值存入此指针指向的结构体
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
void RTC_GetDateTime(RTC_TypeDef *RTCx, RTC_DateTime *dateTime)
{
dateTime->Year = RTCx->YEAR + 1901;
dateTime->Year = RTCx->YEAR;
dateTime->Month = (RTCx->MONDAY & RTC_MONDAY_MON_Msk) >> RTC_MONDAY_MON_Pos;
dateTime->Date = (RTCx->DATHUR & RTC_DATHUR_DATE_Msk) >> RTC_DATHUR_DATE_Pos;
dateTime->Day = 1 << ((RTCx->MONDAY & RTC_MONDAY_DAY_Msk) >> RTC_MONDAY_DAY_Pos);
@@ -114,11 +114,11 @@ void RTC_GetDateTime(RTC_TypeDef *RTCx, RTC_DateTime *dateTime)
dateTime->Second = (RTCx->MINSEC & RTC_MINSEC_SEC_Msk) >> RTC_MINSEC_SEC_Pos;
}
/******************************************************************************************************************************************
* 函数名称: RTC_AlarmSetup()
* 功能说明: RTC闹钟设定
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC有效值包括RTC
* RTC_AlarmStructure * alarmStruct 包含RTC闹钟设定值的结构体
/******************************************************************************************************************************************
* 函数名称: RTC_AlarmSetup()
* 功能说明: RTC闹钟设定
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC有效值包括RTC
* RTC_AlarmStructure * alarmStruct 包含RTC闹钟设定值的结构体
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -145,13 +145,13 @@ void RTC_AlarmSetup(RTC_TypeDef *RTCx, RTC_AlarmStructure *alarmStruct)
NVIC_EnableIRQ(RTC_IRQn);
}
/******************************************************************************************************************************************
* 函数名称: calcWeekDay()
* 功能说明: 计算指定年、月、日是星期几
* 输 入: uint32_t year
* uint32_t month
* uint32_t date
* 输 出: uint32_t 0 星期日 1 星期一 ... ... 6 星期六
/******************************************************************************************************************************************
* 函数名称: calcWeekDay()
* 功能说明: 计算指定年、月、日是星期几
* 输 入: uint32_t year
* uint32_t month
* uint32_t date
* 输 出: uint32_t 0 星期日 1 星期一 ... ... 6 星期六
* 注意事项: 无
******************************************************************************************************************************************/
static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
@@ -178,10 +178,10 @@ static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
return (cnt + 1) % 7;
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondEn()
* 功能说明: 秒中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondEn()
* 功能说明: 秒中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -190,10 +190,10 @@ void RTC_IntSecondEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_SEC_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondDis()
* 功能说明: 秒中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondDis()
* 功能说明: 秒中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -202,10 +202,10 @@ void RTC_IntSecondDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_SEC_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondClr()
* 功能说明: 秒中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondClr()
* 功能说明: 秒中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -214,11 +214,11 @@ void RTC_IntSecondClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_SEC_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondStat()
* 功能说明: 秒中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 秒中断发生 0 秒中断未发生
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondStat()
* 功能说明: 秒中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 秒中断发生 0 秒中断未发生
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t RTC_IntSecondStat(RTC_TypeDef *RTCx)
@@ -226,10 +226,10 @@ uint32_t RTC_IntSecondStat(RTC_TypeDef *RTCx)
return (RTCx->IF & RTC_IF_SEC_Msk) ? 1 : 0;
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteEn()
* 功能说明: 分中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteEn()
* 功能说明: 分中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -238,10 +238,10 @@ void RTC_IntMinuteEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_MIN_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteDis()
* 功能说明: 分中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteDis()
* 功能说明: 分中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -250,10 +250,10 @@ void RTC_IntMinuteDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_MIN_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteClr()
* 功能说明: 分中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteClr()
* 功能说明: 分中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -262,11 +262,11 @@ void RTC_IntMinuteClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_MIN_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteStat()
* 功能说明: 分中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 分中断发生 0 分中断未发生
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteStat()
* 功能说明: 分中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 分中断发生 0 分中断未发生
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t RTC_IntMinuteStat(RTC_TypeDef *RTCx)
@@ -274,10 +274,10 @@ uint32_t RTC_IntMinuteStat(RTC_TypeDef *RTCx)
return (RTCx->IF & RTC_IF_MIN_Msk) ? 1 : 0;
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourEn()
* 功能说明: 时中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourEn()
* 功能说明: 时中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -286,10 +286,10 @@ void RTC_IntHourEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_HOUR_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourDis()
* 功能说明: 时中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourDis()
* 功能说明: 时中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -298,10 +298,10 @@ void RTC_IntHourDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_HOUR_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourClr()
* 功能说明: 时中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourClr()
* 功能说明: 时中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -310,11 +310,11 @@ void RTC_IntHourClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_HOUR_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourStat()
* 功能说明: 时中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 时中断发生 0 时中断未发生
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourStat()
* 功能说明: 时中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 时中断发生 0 时中断未发生
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t RTC_IntHourStat(RTC_TypeDef *RTCx)
@@ -322,10 +322,10 @@ uint32_t RTC_IntHourStat(RTC_TypeDef *RTCx)
return (RTCx->IF & RTC_IF_HOUR_Msk) ? 1 : 0;
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateEn()
* 功能说明: 日中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateEn()
* 功能说明: 日中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -334,10 +334,10 @@ void RTC_IntDateEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_DATE_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateDis()
* 功能说明: 日中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateDis()
* 功能说明: 日中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -346,10 +346,10 @@ void RTC_IntDateDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_DATE_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateClr()
* 功能说明: 日中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateClr()
* 功能说明: 日中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -358,11 +358,11 @@ void RTC_IntDateClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_DATE_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateStat()
* 功能说明: 日中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 日中断发生 0 日中断未发生
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateStat()
* 功能说明: 日中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 日中断发生 0 日中断未发生
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t RTC_IntDateStat(RTC_TypeDef *RTCx)
@@ -370,10 +370,10 @@ uint32_t RTC_IntDateStat(RTC_TypeDef *RTCx)
return (RTCx->IF & RTC_IF_DATE_Msk) ? 1 : 0;
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmEn()
* 功能说明: 闹钟中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmEn()
* 功能说明: 闹钟中断使能
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -382,10 +382,10 @@ void RTC_IntAlarmEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_ALARM_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmDis()
* 功能说明: 闹钟中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmDis()
* 功能说明: 闹钟中断禁止
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -394,10 +394,10 @@ void RTC_IntAlarmDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_ALARM_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmClr()
* 功能说明: 闹钟中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmClr()
* 功能说明: 闹钟中断标志清除
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -406,11 +406,11 @@ void RTC_IntAlarmClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_ALARM_Pos);
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmStat()
* 功能说明: 闹钟中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 闹钟中断发生 0 闹钟中断未发生
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmStat()
* 功能说明: 闹钟中断状态
* 输 入: RTC_TypeDef * RTCx 指定要被设置的RTC可取值包括RTC
* 输 出: uint32_t 1 闹钟中断发生 0 闹钟中断未发生
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t RTC_IntAlarmStat(RTC_TypeDef *RTCx)

View File

@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_sdio.c
* 功能说明: SWM320单片机的SDIO接口驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 功能说明: SWM320单片机的SDIO接口驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项: 为了通用性、兼容性、易用性只支持以512字节为单位的读写
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
@@ -23,11 +23,11 @@
SD_CardInfo SD_cardInfo;
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDIO_Init()
* 功能说明: SDIO读写SD卡初始化初始化成高速4线模式、读写以512字节大小进行
* 输 入: uint32_t freq SDIO_CLK时钟频率
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 功能说明: SDIO读写SD卡初始化初始化成高速4线模式、读写以512字节大小进行
* 输 入: uint32_t freq SDIO_CLK时钟频率
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t SDIO_Init(uint32_t freq)
@@ -125,12 +125,12 @@ uint32_t SDIO_Init(uint32_t freq)
return SD_RES_OK;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDIO_BlockWrite()
* 功能说明: 向SD卡写入数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint32_t buff[] 要写入的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 功能说明: 向SD卡写入数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint32_t buff[] 要写入的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
@@ -161,13 +161,13 @@ uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
return SD_RES_OK;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDIO_MultiBlockWrite()
* 功能说明: 向SD卡写入多块数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint16_t block_cnt 要写入的块数
* uint32_t buff[] 要写入的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 功能说明: 向SD卡写入多块数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint16_t block_cnt 要写入的块数
* uint32_t buff[] 要写入的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t SDIO_MultiBlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
@@ -201,13 +201,13 @@ uint32_t SDIO_MultiBlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t
return SD_RES_OK;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDIO_DMABlockWrite()
* 功能说明: 通过DMA向SD卡写入多块数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint16_t block_cnt 要写入的块数
* uint32_t buff[] 要写入的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 功能说明: 通过DMA向SD卡写入多块数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint16_t block_cnt 要写入的块数
* uint32_t buff[] 要写入的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t SDIO_DMABlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
@@ -233,12 +233,12 @@ uint32_t SDIO_DMABlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t bu
return SD_RES_OK;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDIO_BlockRead()
* 功能说明: 从SD卡读出数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint32_t buff[] 读出的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 功能说明: 从SD卡读出数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint32_t buff[] 读出的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
@@ -269,13 +269,13 @@ uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
return SD_RES_OK;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDIO_MultiBlockRead()
* 功能说明: 从SD卡读出多块数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint16_t block_cnt 要读出的块数
* uint32_t buff[] 读出的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 功能说明: 从SD卡读出多块数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint16_t block_cnt 要读出的块数
* uint32_t buff[] 读出的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
@@ -309,13 +309,13 @@ uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t b
return SD_RES_OK;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDIO_DMABlockRead()
* 功能说明: 通过DMA从SD卡读出多块数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint16_t block_cnt 要读出的块数
* uint32_t buff[] 读出的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 功能说明: 通过DMA从SD卡读出多块数据
* 输 入: uint32_t block_addr SD卡块地址每块512字节
* uint16_t block_cnt 要读出的块数
* uint32_t buff[] 读出的数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t SDIO_DMABlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
@@ -341,18 +341,18 @@ uint32_t SDIO_DMABlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buf
return SD_RES_OK;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: _SDIO_SendCmd()
* 功能说明: SDIO向SD卡发送命令
* 输 入: uint32_t cmd 命令索引
* uint32_t arg 命令参数
* uint32_t resp_type 响应类型取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、SD_RESP_32b_busy
* uint32_t *resp_data 响应内容
* uint32_t have_data 是否有数据传输
* uint32_t data_read 1 读SD卡 0 写SD卡
* uint16_t block_cnt 读写块个数
* uint32_t use_dma 1 使用DMA搬运数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 功能说明: SDIO向SD卡发送命令
* 输 入: uint32_t cmd 命令索引
* uint32_t arg 命令参数
* uint32_t resp_type 响应类型取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、SD_RESP_32b_busy
* uint32_t *resp_data 响应内容
* uint32_t have_data 是否有数据传输
* uint32_t data_read 1 读SD卡 0 写SD卡
* uint16_t block_cnt 读写块个数
* uint32_t use_dma 1 使用DMA搬运数据
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t _SDIO_SendCmd(uint32_t cmd, uint32_t arg, uint32_t resp_type, uint32_t *resp_data, uint32_t have_data, uint32_t data_read, uint16_t block_cnt, uint32_t use_dma)

View File

@@ -1,29 +1,29 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_sdram.c
* 功能说明: SWM320单片机的SDRAM驱动程序
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 功能说明: SWM320单片机的SDRAM驱动程序
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_sdram.h"
/******************************************************************************************************************************************
* 函数名称: SDRAM_Init()
* 功能说明: SDRAM控制器初始化
/******************************************************************************************************************************************
* 函数名称: SDRAM_Init()
* 功能说明: SDRAM控制器初始化
* 输 入: SDRAM_InitStructure * initStruct 包含 SDRAM 控制器相关设定值的结构体
* 输 出: 无
* 注意事项: 无
@@ -79,9 +79,9 @@ void SDRAM_Init(SDRAM_InitStructure *initStruct)
;
}
/******************************************************************************************************************************************
* 函数名称: SDRAM_Enable()
* 功能说明: SDRAM使能使能后可读写SDRAM
/******************************************************************************************************************************************
* 函数名称: SDRAM_Enable()
* 功能说明: SDRAM使能使能后可读写SDRAM
* 输 入: 无
* 输 出: 无
* 注意事项: 无
@@ -97,9 +97,9 @@ void SDRAM_Enable(void)
__NOP();
}
/******************************************************************************************************************************************
* 函数名称: SDRAM_Disable()
* 功能说明: SDRAM禁能禁能后SDRAM颗粒进入低功耗模式、并自刷新不可读写
/******************************************************************************************************************************************
* 函数名称: SDRAM_Disable()
* 功能说明: SDRAM禁能禁能后SDRAM颗粒进入低功耗模式、并自刷新不可读写
* 输 入: 无
* 输 出: 无
* 注意事项: 无

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +1,29 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_sram.c
* 功能说明: SWM320单片机的SRAM驱动程序
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 功能说明: SWM320单片机的SRAM驱动程序
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_sram.h"
/******************************************************************************************************************************************
* 函数名称: SRAM_Init()
* 功能说明: SRAM控制器初始化
/******************************************************************************************************************************************
* 函数名称: SRAM_Init()
* 功能说明: SRAM控制器初始化
* 输 入: SRAM_InitStructure * initStruct 包含 SRAM 控制器相关设定值的结构体
* 输 出: 无
* 注意事项: 无

View File

@@ -1,33 +1,33 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_timr.c
* 功能说明: SWM320单片机的计数器/定时器功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 功能说明: SWM320单片机的计数器/定时器功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_timr.h"
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_Init()
* 功能说明: TIMR定时器/计数器初始化
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器有效值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* uint32_t mode TIMR_MODE_TIMER 定时器模式 TIMR_MODE_COUNTER 计数器模式
* uint32_t period 定时/计数周期
* uint32_t int_en 中断使能
* 功能说明: TIMR定时器/计数器初始化
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器有效值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* uint32_t mode TIMR_MODE_TIMER 定时器模式 TIMR_MODE_COUNTER 计数器模式
* uint32_t period 定时/计数周期
* uint32_t int_en 中断使能
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -100,10 +100,10 @@ void TIMR_Init(TIMR_TypeDef *TIMRx, uint32_t mode, uint32_t period, uint32_t int
}
}
/******************************************************************************************************************************************
* 函数名称: TIMR_Start()
* 功能说明: 启动定时器,从初始值开始计时/计数
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
/******************************************************************************************************************************************
* 函数名称: TIMR_Start()
* 功能说明: 启动定时器,从初始值开始计时/计数
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -112,10 +112,10 @@ void TIMR_Start(TIMR_TypeDef *TIMRx)
TIMRx->CTRL |= TIMR_CTRL_EN_Msk;
}
/******************************************************************************************************************************************
* 函数名称: TIMR_Stop()
* 功能说明: 停止定时器
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
/******************************************************************************************************************************************
* 函数名称: TIMR_Stop()
* 功能说明: 停止定时器
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -124,10 +124,10 @@ void TIMR_Stop(TIMR_TypeDef *TIMRx)
TIMRx->CTRL &= ~TIMR_CTRL_EN_Msk;
}
/******************************************************************************************************************************************
* 函数名称: TIMR_Halt()
* 功能说明: 暂停定时器,计数值保持不变
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
/******************************************************************************************************************************************
* 函数名称: TIMR_Halt()
* 功能说明: 暂停定时器,计数值保持不变
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -161,10 +161,10 @@ void TIMR_Halt(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
* 函数名称: TIMR_Resume()
* 功能说明: 恢复定时器,从暂停处继续计数
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
/******************************************************************************************************************************************
* 函数名称: TIMR_Resume()
* 功能说明: 恢复定时器,从暂停处继续计数
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -198,11 +198,11 @@ void TIMR_Resume(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_SetPeriod()
* 功能说明: 设置定时/计数周期
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* uint32_t period 定时/计数周期
* 功能说明: 设置定时/计数周期
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* uint32_t period 定时/计数周期
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -211,11 +211,11 @@ void TIMR_SetPeriod(TIMR_TypeDef *TIMRx, uint32_t period)
TIMRx->LDVAL = period;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_GetPeriod()
* 功能说明: 获取定时/计数周期
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: uint32_t 当前定时/计数周期
* 功能说明: 获取定时/计数周期
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: uint32_t 当前定时/计数周期
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t TIMR_GetPeriod(TIMR_TypeDef *TIMRx)
@@ -223,11 +223,11 @@ uint32_t TIMR_GetPeriod(TIMR_TypeDef *TIMRx)
return TIMRx->LDVAL;
}
/******************************************************************************************************************************************
* 函数名称: TIMR_GetCurValue()
* 功能说明: 获取当前计数值
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: uint32_t 当前计数值
/******************************************************************************************************************************************
* 函数名称: TIMR_GetCurValue()
* 功能说明: 获取当前计数值
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: uint32_t 当前计数值
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t TIMR_GetCurValue(TIMR_TypeDef *TIMRx)
@@ -235,10 +235,10 @@ uint32_t TIMR_GetCurValue(TIMR_TypeDef *TIMRx)
return TIMRx->CVAL;
}
/******************************************************************************************************************************************
* 函数名称: TIMR_INTEn()
* 功能说明: 使能中断
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
/******************************************************************************************************************************************
* 函数名称: TIMR_INTEn()
* 功能说明: 使能中断
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -278,10 +278,10 @@ void TIMR_INTEn(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_INTDis()
* 功能说明: 禁能中断
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 功能说明: 禁能中断
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -315,10 +315,10 @@ void TIMR_INTDis(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
* 函数名称: TIMR_INTClr()
* 功能说明: 清除中断标志
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
/******************************************************************************************************************************************
* 函数名称: TIMR_INTClr()
* 功能说明: 清除中断标志
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -352,11 +352,11 @@ void TIMR_INTClr(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_INTStat()
* 功能说明: 获取中断状态
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: uint32_t 0 TIMRx未产生中断 1 TIMRx产生了中断
* 功能说明: 获取中断状态
* 输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
* 输 出: uint32_t 0 TIMRx未产生中断 1 TIMRx产生了中断
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t TIMR_INTStat(TIMR_TypeDef *TIMRx)
@@ -385,11 +385,11 @@ uint32_t TIMR_INTStat(TIMR_TypeDef *TIMRx)
return 0;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: Pulse_Init()
* 功能说明: 脉宽测量功能初始化
* 输 入: uint32_t pulse PULSE_LOW 测量低脉冲宽度 PULSE_HIGH 测量高脉冲宽度
* uint32_t int_en 是否使能脉冲测量完成中断
* 功能说明: 脉宽测量功能初始化
* 输 入: uint32_t pulse PULSE_LOW 测量低脉冲宽度 PULSE_HIGH 测量高脉冲宽度
* uint32_t int_en 是否使能脉冲测量完成中断
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -407,9 +407,9 @@ void Pulse_Init(uint32_t pulse, uint32_t int_en)
NVIC_EnableIRQ(PULSE_IRQn);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: Pulse_Start()
* 功能说明: 脉宽测量功能启动,测量到脉宽后会自动关闭测量功能
* 功能说明: 脉宽测量功能启动,测量到脉宽后会自动关闭测量功能
* 输 入: 无
* 输 出: 无
* 注意事项: 无
@@ -419,11 +419,11 @@ void Pulse_Start(void)
TIMRG->PCTRL |= (1 << TIMRG_PCTRL_EN_Pos);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: Pulse_Done()
* 功能说明: 脉宽测量是否完成
* 功能说明: 脉宽测量是否完成
* 输 入: 无
* 输 出: uint32_t 1 测量已完成 0 测量未完成
* 输 出: uint32_t 1 测量已完成 0 测量未完成
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t Pulse_Done(void)

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 文件名称: SWM320_wdt.c
* 功能说明: SWM320单片机的WDT看门狗功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 功能说明: SWM320单片机的WDT看门狗功能驱动库
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* 注意事项:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
* 版本日期: V1.1.0 2017年10月25日
* 升级记录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
@@ -21,14 +21,14 @@
#include "SWM320.h"
#include "SWM320_wdt.h"
/******************************************************************************************************************************************
* 函数名称: WDT_Init()
* 功能说明: WDT看门狗初始化
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* uint32_t peroid 取值0--4294967295单位为单片机系统时钟周期
* uint32_t mode WDT_MODE_RESET 超时产生复位 WDT_MODE_INTERRUPT 超时产生中断
/******************************************************************************************************************************************
* 函数名称: WDT_Init()
* 功能说明: WDT看门狗初始化
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* uint32_t peroid 取值0--4294967295单位为单片机系统时钟周期
* uint32_t mode WDT_MODE_RESET 超时产生复位 WDT_MODE_INTERRUPT 超时产生中断
* 输 出: 无
* 注意事项: 复位使能时中断不起作用,因为计数周期结束时芯片直接复位了,无法响应中断
* 注意事项:
******************************************************************************************************************************************/
void WDT_Init(WDT_TypeDef *WDTx, uint32_t peroid, uint32_t mode)
{
@@ -36,26 +36,28 @@ void WDT_Init(WDT_TypeDef *WDTx, uint32_t peroid, uint32_t mode)
WDT_Stop(WDTx); //设置前先关闭
WDTx->LOAD = peroid;
if (mode == WDT_MODE_RESET)
{
WDTx->LOAD = peroid / 2; //第一个计数周期置位中断标志、第二个计数周期将芯片复位
NVIC_DisableIRQ(WDT_IRQn);
WDTx->CR |= (1 << WDT_CR_RSTEN_Pos);
}
else //mode == WDT_MODE_INTERRUPT
{
WDTx->LOAD = peroid;
NVIC_EnableIRQ(WDT_IRQn);
WDTx->CR &= ~(1 << WDT_CR_RSTEN_Pos);
}
}
/******************************************************************************************************************************************
* 函数名称: WDT_Start()
* 功能说明: 启动指定WDT开始倒计时
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
/******************************************************************************************************************************************
* 函数名称: WDT_Start()
* 功能说明: 启动指定WDT开始倒计时
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -64,10 +66,10 @@ void WDT_Start(WDT_TypeDef *WDTx)
WDTx->CR |= (0x01 << WDT_CR_EN_Pos);
}
/******************************************************************************************************************************************
* 函数名称: WDT_Stop()
* 功能说明: 关闭指定WDT停止倒计时
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
/******************************************************************************************************************************************
* 函数名称: WDT_Stop()
* 功能说明: 关闭指定WDT停止倒计时
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -76,10 +78,10 @@ void WDT_Stop(WDT_TypeDef *WDTx)
WDTx->CR &= ~(0x01 << WDT_CR_EN_Pos);
}
/******************************************************************************************************************************************
* 函数名称: WDT_Feed()
* 功能说明: 喂狗,重新从装载值开始倒计时
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
/******************************************************************************************************************************************
* 函数名称: WDT_Feed()
* 功能说明: 喂狗,重新从装载值开始倒计时
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -88,11 +90,11 @@ void WDT_Feed(WDT_TypeDef *WDTx)
WDTx->FEED = 0x55;
}
/******************************************************************************************************************************************
* 函数名称: WDT_GetValue()
* 功能说明: 获取指定看门狗定时器的当前倒计时值
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* 输 出: int32_t 看门狗当前计数值
/******************************************************************************************************************************************
* 函数名称: WDT_GetValue()
* 功能说明: 获取指定看门狗定时器的当前倒计时值
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* 输 出: int32_t 看门狗当前计数值
* 注意事项: 无
******************************************************************************************************************************************/
int32_t WDT_GetValue(WDT_TypeDef *WDTx)
@@ -100,10 +102,10 @@ int32_t WDT_GetValue(WDT_TypeDef *WDTx)
return WDTx->VALUE;
}
/******************************************************************************************************************************************
* 函数名称: WDT_INTClr()
* 功能说明: 中断标志清除
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
/******************************************************************************************************************************************
* 函数名称: WDT_INTClr()
* 功能说明: 中断标志清除
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
@@ -112,11 +114,11 @@ void WDT_INTClr(WDT_TypeDef *WDTx)
WDTx->IF = 1;
}
/******************************************************************************************************************************************
* 函数名称: WDT_INTStat()
* 功能说明: 中断状态查询
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* 输 出: int32_t 1 发生中断溢出 0 未发生中断溢出
/******************************************************************************************************************************************
* 函数名称: WDT_INTStat()
* 功能说明: 中断状态查询
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗有效值包括WDT
* 输 出: int32_t 1 发生中断溢出 0 未发生中断溢出
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t WDT_INTStat(WDT_TypeDef *WDTx)

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More