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
+131 -61
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
+3 -3
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)
+29 -32
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");
+2 -2
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
+36
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();
+4 -8
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 */
+1
View File
@@ -475,6 +475,7 @@ static void rt_hw_pin_isr(GPIO_TypeDef *GPIOx)
}
}
}
void GPIOA_Handler(void)
{
rt_interrupt_enter();
+1 -1
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
*
+43 -67
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);
+1 -1
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;
+6 -6
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++)
{
+113 -47
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) }
}
@@ -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)
@@ -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
@@ -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
File diff suppressed because it is too large Load Diff
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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
}
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*******************************************************************************************************************************************
* @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 ADCADC0ADC1
* ADC_InitStructure * initStruct ADC各相关定值的结构体
* : ADC模数转换器初始化
* : ADC_TypeDef * ADCx ADCADC0ADC1
* ADC_InitStructure * initStruct ADC各相关定值的结构体
* :
* :
******************************************************************************************************************************************/
@@ -152,10 +152,10 @@ void ADC_Init(ADC_TypeDef *ADCx, ADC_InitStructure *initStruct)
}
}
/******************************************************************************************************************************************
* : ADC_Open()
* : ADC开启ADC转换
* : ADC_TypeDef * ADCx ADCADC
/******************************************************************************************************************************************
* : ADC_Open()
* : ADC开启ADC转换
* : ADC_TypeDef * ADCx ADCADC
* :
* :
******************************************************************************************************************************************/
@@ -164,10 +164,10 @@ void ADC_Open(ADC_TypeDef *ADCx)
ADCx->CTRL |= (0x01 << ADC_CTRL_EN_Pos);
}
/******************************************************************************************************************************************
* : ADC_Close()
* : ADC关闭ADC转换
* : ADC_TypeDef * ADCx ADCADC
/******************************************************************************************************************************************
* : ADC_Close()
* : ADC关闭ADC转换
* : ADC_TypeDef * ADCx ADCADC
* :
* :
******************************************************************************************************************************************/
@@ -176,10 +176,10 @@ void ADC_Close(ADC_TypeDef *ADCx)
ADCx->CTRL &= ~(0x01 << ADC_CTRL_EN_Pos);
}
/******************************************************************************************************************************************
* : ADC_Start()
* : ADC转换
* : ADC_TypeDef * ADCx ADCADC
/******************************************************************************************************************************************
* : ADC_Start()
* : ADC转换
* : ADC_TypeDef * ADCx ADCADC
* :
* :
******************************************************************************************************************************************/
@@ -188,10 +188,10 @@ void ADC_Start(ADC_TypeDef *ADCx)
ADCx->START |= (0x01 << ADC_START_GO_Pos);
}
/******************************************************************************************************************************************
* : ADC_Stop()
* : ADC转换
* : ADC_TypeDef * ADCx ADCADC
/******************************************************************************************************************************************
* : ADC_Stop()
* : ADC转换
* : ADC_TypeDef * ADCx ADCADC
* :
* :
******************************************************************************************************************************************/
@@ -235,12 +235,12 @@ static uint32_t chn2idx(uint32_t chn)
return idx;
}
/******************************************************************************************************************************************
* : ADC_Read()
* :
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
* : uint32_t
/******************************************************************************************************************************************
* : ADC_Read()
* :
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
* : uint32_t 1 0
/******************************************************************************************************************************************
* : ADC_IsEOC()
* : End Of Conversion
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chns ADC_CH0ADC_CH1... ... ADC_CH7及其组合
/******************************************************************************************************************************************
* : ADC_ChnSelect()
* : ADC通道选通
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chns ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntEOCEn()
* : 使
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntEOCDis()
* :
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntEOCClr()
* :
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
* : uint32_t 1 0
/******************************************************************************************************************************************
* : ADC_IntEOCStat()
* :
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntOVFEn()
* : 使
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntOVFDis()
* :
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntOVFClr()
* :
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
* : uint32_t 1 0
/******************************************************************************************************************************************
* : ADC_IntOVFStat()
* :
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntHFULLEn()
* : FIFO半满中断使能
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntHFULLDis()
* : FIFO半满中断禁止
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntHFULLClr()
* : FIFO半满中断标志清除
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
* : uint32_t 1 0
/******************************************************************************************************************************************
* : ADC_IntHFULLStat()
* : FIFO半满中断状态
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntFULLEn()
* : FIFO满中断使能
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntFULLDis()
* : FIFO满中断禁止
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
/******************************************************************************************************************************************
* : ADC_IntFULLClr()
* : FIFO满中断标志清除
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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 ADCADC
* uint32_t chn ADC_CH0ADC_CH1... ... ADC_CH7
* : uint32_t 1 0
/******************************************************************************************************************************************
* : ADC_IntFULLStat()
* : FIFO满中断状态
* : ADC_TypeDef * ADCx ADCADC
* uint32_t chn ADC_CH0ADC_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
@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : SWM320_crc.c
* : SWM320单片机的CRC模块驱动库
* : http://www.synwit.com.cn/e/tool/gbook/?bid=1
* :
* : V1.1.0 20171025
* :
* : SWM320单片机的CRC模块驱动库
* : http://www.synwit.com.cn/e/tool/gbook/?bid=1
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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_IN32CRC32_IN16CRC32_IN8CRC16_IN16CRC16_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_IN32CRC32_IN16CRC32_IN8CRC16_IN16CRC16_IN8
* uint32_t out_not
* uint32_t out_rev
* uint32_t ini_val CRC初始值
* :
* :
******************************************************************************************************************************************/
@@ -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)
@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : SWM320_dma.c
* : SWM320单片机的DMA功能驱动库
* : http://www.synwit.com.cn/e/tool/gbook/?bid=1
* :
* : V1.1.0 20171025
* :
* : SWM320单片机的DMA功能驱动库
* : http://www.synwit.com.cn/e/tool/gbook/?bid=1
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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_CH0DMA_CH1DMA_CH2
* uint32_t src_addr 200
* uint32_t src_addr_incr 0 1
* uint32_t dst_addr 200
* 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_CH0DMA_CH1DMA_CH2
* uint32_t src_addr 200
* uint32_t src_addr_incr 0 1
* uint32_t dst_addr 200
* 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_CH0DMA_CH1DMA_CH2
* : DMA通道打开
* : uint32_t chn DMA_CH0DMA_CH1DMA_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_CH0DMA_CH1DMA_CH2
* : DMA通道关闭
* : uint32_t chn DMA_CH0DMA_CH1DMA_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_CH0DMA_CH1DMA_CH2
* : DMA中断使能
* : uint32_t chn DMA_CH0DMA_CH1DMA_CH2
* :
* :
******************************************************************************************************************************************/
@@ -103,10 +103,10 @@ void DMA_CH_INTEn(uint32_t chn)
DMA->IM &= ~(1 << chn);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : DMA_CH_INTDis()
* : DMA中断禁止
* : uint32_t chn DMA_CH0DMA_CH1DMA_CH2
* : DMA中断禁止
* : uint32_t chn DMA_CH0DMA_CH1DMA_CH2
* :
* :
******************************************************************************************************************************************/
@@ -115,10 +115,10 @@ void DMA_CH_INTDis(uint32_t chn)
DMA->IM |= (1 << chn);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : DMA_CH_INTClr()
* : DMA中断标志清除
* : uint32_t chn DMA_CH0DMA_CH1DMA_CH2
* : DMA中断标志清除
* : uint32_t chn DMA_CH0DMA_CH1DMA_CH2
* :
* :
******************************************************************************************************************************************/
@@ -127,11 +127,11 @@ void DMA_CH_INTClr(uint32_t chn)
DMA->IF = (1 << chn);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : DMA_CH_INTStat()
* : DMA中断状态查询
* : uint32_t chn DMA_CH0DMA_CH1DMA_CH2
* : uint32_t 1 0
* : DMA中断状态查询
* : uint32_t chn DMA_CH0DMA_CH1DMA_CH2
* : uint32_t 1 0
* :
******************************************************************************************************************************************/
uint32_t DMA_CH_INTStat(uint32_t chn)
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*******************************************************************************************************************************************
* @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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t mode EXTI_FALL_EDGEEXTI_RISE_EDGEEXTI_BOTH_EDGEEXTI_LOW_LEVELEXTI_HIGH_LEVEL
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t mode EXTI_FALL_EDGEEXTI_RISE_EDGEEXTI_BOTH_EDGEEXTI_LOW_LEVELEXTI_HIGH_LEVEL
* :
* : GPIOAGPIOBGPIOCGPIOM的PIN0--7NVIC中的引脚中断GPIOA0_IRQnNVIC的组中断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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
/******************************************************************************************************************************************
* : EXTI_Open()
* : 使
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* :
* :
******************************************************************************************************************************************/
@@ -78,11 +78,11 @@ void EXTI_Open(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->INTEN |= (0x01 << n);
}
/******************************************************************************************************************************************
* : EXTI_Close()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
/******************************************************************************************************************************************
* : EXTI_Close()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* :
* :
******************************************************************************************************************************************/
@@ -91,12 +91,12 @@ void EXTI_Close(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->INTEN &= ~(0x01 << n);
}
/******************************************************************************************************************************************
* : EXTI_State()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* : uint32_t 1 0
/******************************************************************************************************************************************
* : EXTI_State()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* : 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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* : uint32_t 1 / 0 /
/******************************************************************************************************************************************
* : EXTI_RawState()
* : //
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* : 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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
/******************************************************************************************************************************************
* : EXTI_Clear()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* :
* : 沿
******************************************************************************************************************************************/
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*******************************************************************************************************************************************
* @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 44
* : Flash写入
* : uint32_t addr
* uint32_t buff[]
* uint32_t count 44
* :
* : 44
******************************************************************************************************************************************/
@@ -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
* :
* :
******************************************************************************************************************************************/
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t dir 0 1
* uint32_t pull_up 0 1
* uint32_t pull_down 0 1
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t dir 0 1
* uint32_t pull_up 0 1
* uint32_t pull_down 0 1
* :
* : GPIOAGPIOCGPIOMGPIOP只有上拉GPIOBGPION只有下拉PN0PN1PN2三个引脚有上拉没下拉
******************************************************************************************************************************************/
@@ -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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* :
* :
******************************************************************************************************************************************/
@@ -165,11 +165,11 @@ void GPIO_SetBit(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->DATA |= (0x01 << n);
}
/******************************************************************************************************************************************
* : GPIO_ClrBit()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
/******************************************************************************************************************************************
* : GPIO_ClrBit()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* :
* :
******************************************************************************************************************************************/
@@ -178,11 +178,11 @@ void GPIO_ClrBit(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->DATA &= ~(0x01 << n);
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : GPIO_InvBit()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* :
* :
******************************************************************************************************************************************/
@@ -191,12 +191,12 @@ void GPIO_InvBit(GPIO_TypeDef *GPIOx, uint32_t n)
GPIOx->DATA ^= (0x01 << n);
}
/******************************************************************************************************************************************
* : GPIO_GetBit()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* : 0 1
/******************************************************************************************************************************************
* : GPIO_GetBit()
* :
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* : 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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t w
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* 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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t w
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* 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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t w
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* 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端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t w
* : n开始的w位连续引脚的电平状态 0 1
* 0n的电平状态1n+1... ...w位表示引脚n+w的电平状态
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOMGPIONGPIOP
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t w
* : n开始的w位连续引脚的电平状态 0 1
* 0n的电平状态1n+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端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* : --ISR打断
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* :
* : 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端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
/******************************************************************************************************************************************
* : GPIO_AtomicClrBit()
* : --ISR打断
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* :
* : 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端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* : --ISR打断
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* :
* : 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端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* uint32_t w
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* 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端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* uint32_t w
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* 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端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* uint32_t w
* : GPIO_TypeDef * GPIOx GPIO端口GPIOAGPIOBGPIOCGPIOD
* uint32_t n GPIO引脚PIN0PIN1PIN2... ... PIN14PIN15
* uint32_t w
* :
* : GPIOx的16个引脚中ISR中操作时GPIOx的引脚必须都用GPIO_Atomic类型函数操作
******************************************************************************************************************************************/
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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 I2CI2C0I2C1
* I2C_InitStructure * initStruct I2C相关设定值的结构体
/******************************************************************************************************************************************
* : I2C_Init()
* : I2C初始化
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
* I2C_InitStructure * initStruct I2C相关设定值的结构体
* :
* :
******************************************************************************************************************************************/
@@ -125,10 +125,10 @@ void I2C_Init(I2C_TypeDef *I2Cx, I2C_InitStructure *initStruct)
}
}
/******************************************************************************************************************************************
* : I2C_Open()
* : I2C打开
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
/******************************************************************************************************************************************
* : I2C_Open()
* : I2C打开
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
* :
* :
******************************************************************************************************************************************/
@@ -137,10 +137,10 @@ void I2C_Open(I2C_TypeDef *I2Cx)
I2Cx->CTRL |= (0x01 << I2C_CTRL_EN_Pos);
}
/******************************************************************************************************************************************
* : I2C_Close()
* : I2C关闭
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
/******************************************************************************************************************************************
* : I2C_Close()
* : I2C关闭
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
* :
* :
******************************************************************************************************************************************/
@@ -149,12 +149,12 @@ void I2C_Close(I2C_TypeDef *I2Cx)
I2Cx->CTRL &= ~I2C_CTRL_EN_Msk;
}
/******************************************************************************************************************************************
* : I2C_Start()
* :
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
* uint8_t addr
* : uint8_t 1 ACK 0 NACK
/******************************************************************************************************************************************
* : I2C_Start()
* :
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
* 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 I2CI2C0I2C1
/******************************************************************************************************************************************
* : I2C_Stop()
* :
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
* :
* :
******************************************************************************************************************************************/
@@ -182,12 +182,12 @@ void I2C_Stop(I2C_TypeDef *I2Cx)
__NOP(); //等待发送完成
}
/******************************************************************************************************************************************
* : I2C_Write()
* :
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
* uint8_t data
* : uint8_t 1 ACK 0 NACK
/******************************************************************************************************************************************
* : I2C_Write()
* :
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
* 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 I2CI2C0I2C1
* uint8_t ack 1 ACK 0 NACK
* : uint8_t
/******************************************************************************************************************************************
* : I2C_Read()
* :
* : I2C_TypeDef * I2Cx I2CI2C0I2C1
* uint8_t ack 1 ACK 0 NACK
* : uint8_t
* :
******************************************************************************************************************************************/
uint8_t I2C_Read(I2C_TypeDef *I2Cx, uint8_t ack)
@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : SWM320_lcd.c
* : SWM320单片机的LCD功能驱动库
* : http://www.synwit.com.cn/e/tool/gbook/?bid=1
* :
* : V1.1.0 20171025
* :
* : SWM320单片机的LCD功能驱动库
* : http://www.synwit.com.cn/e/tool/gbook/?bid=1
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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 LCDLCD
* LCD_InitStructure * initStruct LCD相关设定值的结构体
/******************************************************************************************************************************************
* : LCD_Init()
* : LCD初始化
* : LCD_TypeDef * LCDx LCDLCD
* LCD_InitStructure * initStruct LCD相关设定值的结构体
* :
* :
******************************************************************************************************************************************/
@@ -74,10 +74,10 @@ void LCD_Init(LCD_TypeDef *LCDx, LCD_InitStructure *initStruct)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : LCD_Start()
* :
* : LCD_TypeDef * LCDx LCDLCD
* :
* : LCD_TypeDef * LCDx LCDLCD
* :
* :
******************************************************************************************************************************************/
@@ -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 LCDLCD
* : uint32_t 1 0
* :
* : LCD_TypeDef * LCDx LCDLCD
* : 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 LCDLCD
* : LCD中断使能
* : LCD_TypeDef * LCDx LCDLCD
* :
* :
******************************************************************************************************************************************/
@@ -110,10 +110,10 @@ void LCD_INTEn(LCD_TypeDef *LCDx)
LCDx->IM = 0;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : LCD_INTDis()
* : LCD中断禁止
* : LCD_TypeDef * LCDx LCDLCD
* : LCD中断禁止
* : LCD_TypeDef * LCDx LCDLCD
* :
* :
******************************************************************************************************************************************/
@@ -122,10 +122,10 @@ void LCD_INTDis(LCD_TypeDef *LCDx)
LCDx->IM = 1;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : LCD_INTClr()
* : LCD中断标志清除
* : LCD_TypeDef * LCDx LCDLCD
* : LCD中断标志清除
* : LCD_TypeDef * LCDx LCDLCD
* :
* :
******************************************************************************************************************************************/
@@ -134,11 +134,11 @@ void LCD_INTClr(LCD_TypeDef *LCDx)
LCDx->IF = 1;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : LCD_INTStat()
* : LCD中断状态查询
* : LCD_TypeDef * LCDx LCDLCD
* : uint32_t 1 0
* : LCD中断状态查询
* : LCD_TypeDef * LCDx LCDLCD
* : uint32_t 1 0
* :
******************************************************************************************************************************************/
uint32_t LCD_INTStat(LCD_TypeDef *LCDx)
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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 88K25564K MX29LV128DT 25564K88K
******************************************************************************************************************************************/
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)
@@ -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
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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端口PORTAPORTBPORTCPORTMPORTNPORTP
* uint32_t n PORT引脚PIN0PIN1PIN2... ... PIN22PIN23
* uint32_t func "SWM320_port.h"
* uint32_t digit_in_en 使
* : "SWM320_port.h"
* : uint32_t PORTx PORT端口PORTAPORTBPORTCPORTMPORTNPORTP
* uint32_t n PORT引脚PIN0PIN1PIN2... ... PIN22PIN23
* 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)
{
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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 PWMPWM0PWM1PWM2PWM3PWM4PWM5
* PWM_InitStructure * initStruct PWM相关设定值的结构体
/******************************************************************************************************************************************
* : PWM_Init()
* : PWM初始化
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* PWM_InitStructure * initStruct PWM相关设定值的结构体
* :
* :
******************************************************************************************************************************************/
@@ -98,12 +98,12 @@ void PWM_Init(PWM_TypeDef *PWMx, PWM_InitStructure *initStruct)
}
}
/******************************************************************************************************************************************
* : PWM_Start()
* : PWMPWM输出
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chA 0 A不启动 1 A启动
* uint32_t chB 0 B不启动 1 B启动
/******************************************************************************************************************************************
* : PWM_Start()
* : PWMPWM输出
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* 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()
* : PWMPWM输出
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chA 0 A不关闭 1 A关闭
* uint32_t chB 0 B不关闭 1 B关闭
/******************************************************************************************************************************************
* : PWM_Stop()
* : PWMPWM输出
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* 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 PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* uint16_t cycle
/******************************************************************************************************************************************
* : PWM_SetCycle()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_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 PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : uint16_t
/******************************************************************************************************************************************
* : PWM_GetCycle()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_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 PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* uint16_t hduty
/******************************************************************************************************************************************
* : PWM_SetHDuty()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_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 PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : uint16_t
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_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 PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* uint8_t deadzone
/******************************************************************************************************************************************
* : PWM_SetDeadzone()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_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 PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : uint8_t
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_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 PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* :
* :
******************************************************************************************************************************************/
@@ -343,11 +343,11 @@ void PWM_IntNCycleEn(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* : PWM_IntNCycleDis()
/******************************************************************************************************************************************
* : PWM_IntNCycleDis()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* :
* :
******************************************************************************************************************************************/
@@ -399,11 +399,11 @@ void PWM_IntNCycleDis(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* : PWM_IntNCycleClr()
/******************************************************************************************************************************************
* : PWM_IntNCycleClr()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* :
* :
******************************************************************************************************************************************/
@@ -455,12 +455,12 @@ void PWM_IntNCycleClr(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* : PWM_IntNCycleStat()
/******************************************************************************************************************************************
* : PWM_IntNCycleStat()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : uint32_t 1 0
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_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 PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* :
* :
******************************************************************************************************************************************/
@@ -571,11 +571,11 @@ void PWM_IntHEndEn(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* : PWM_IntHEndDis()
/******************************************************************************************************************************************
* : PWM_IntHEndDis()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* :
* :
******************************************************************************************************************************************/
@@ -627,11 +627,11 @@ void PWM_IntHEndDis(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* : PWM_IntHEndClr()
/******************************************************************************************************************************************
* : PWM_IntHEndClr()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* :
* :
******************************************************************************************************************************************/
@@ -683,12 +683,12 @@ void PWM_IntHEndClr(PWM_TypeDef *PWMx, uint32_t chn)
}
}
/******************************************************************************************************************************************
* : PWM_IntHEndStat()
/******************************************************************************************************************************************
* : PWM_IntHEndStat()
* :
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : uint32_t 1 0
* : PWM_TypeDef * PWMx PWMPWM0PWM1PWM2PWM3PWM4PWM5
* uint32_t chn PWM_CH_APWM_CH_B
* : uint32_t 1 0
* :
******************************************************************************************************************************************/
uint32_t PWM_IntHEndStat(PWM_TypeDef *PWMx, uint32_t chn)
@@ -1,18 +1,18 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : SWM320_rtc.c
* : SWM320单片机的RTC驱动库
* : http://www.synwit.com.cn/e/tool/gbook/?bid=1
* :
* : V1.1.0 20171025
* :
* : SWM320单片机的RTC驱动库
* : http://www.synwit.com.cn/e/tool/gbook/?bid=1
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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 RTCRTC
* RTC_InitStructure * initStruct RTC相关设定值的结构体
/******************************************************************************************************************************************
* : RTC_Init()
* : RTC初始化
* : RTC_TypeDef * RTCx RTCRTC
* 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 RTCRTC
/******************************************************************************************************************************************
* : RTC_Start()
* : RTC
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -83,10 +83,10 @@ void RTC_Start(RTC_TypeDef *RTCx)
RTCx->EN = 1;
}
/******************************************************************************************************************************************
* : RTC_Stop()
* : RTC
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_Stop()
* : RTC
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -95,17 +95,17 @@ void RTC_Stop(RTC_TypeDef *RTCx)
RTCx->EN = 0;
}
/******************************************************************************************************************************************
* : RTC_GetDateTime()
* :
* : RTC_TypeDef * RTCx RTCRTC
* RTC_DateTime * dateTime
/******************************************************************************************************************************************
* : RTC_GetDateTime()
* :
* : RTC_TypeDef * RTCx RTCRTC
* 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 RTCRTC
* RTC_AlarmStructure * alarmStruct RTC闹钟设定值的结构体
/******************************************************************************************************************************************
* : RTC_AlarmSetup()
* : RTC闹钟设定
* : RTC_TypeDef * RTCx RTCRTC
* 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 RTCRTC
/******************************************************************************************************************************************
* : RTC_IntSecondEn()
* : 使
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -190,10 +190,10 @@ void RTC_IntSecondEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_SEC_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntSecondDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntSecondDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -202,10 +202,10 @@ void RTC_IntSecondDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_SEC_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntSecondClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntSecondClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -214,11 +214,11 @@ void RTC_IntSecondClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_SEC_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntSecondStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : uint32_t 1 0
/******************************************************************************************************************************************
* : RTC_IntSecondStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : 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 RTCRTC
/******************************************************************************************************************************************
* : RTC_IntMinuteEn()
* : 使
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -238,10 +238,10 @@ void RTC_IntMinuteEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_MIN_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntMinuteDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntMinuteDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -250,10 +250,10 @@ void RTC_IntMinuteDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_MIN_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntMinuteClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntMinuteClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -262,11 +262,11 @@ void RTC_IntMinuteClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_MIN_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntMinuteStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : uint32_t 1 0
/******************************************************************************************************************************************
* : RTC_IntMinuteStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : 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 RTCRTC
/******************************************************************************************************************************************
* : RTC_IntHourEn()
* : 使
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -286,10 +286,10 @@ void RTC_IntHourEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_HOUR_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntHourDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntHourDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -298,10 +298,10 @@ void RTC_IntHourDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_HOUR_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntHourClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntHourClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -310,11 +310,11 @@ void RTC_IntHourClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_HOUR_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntHourStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : uint32_t 1 0
/******************************************************************************************************************************************
* : RTC_IntHourStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : 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 RTCRTC
/******************************************************************************************************************************************
* : RTC_IntDateEn()
* : 使
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -334,10 +334,10 @@ void RTC_IntDateEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_DATE_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntDateDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntDateDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -346,10 +346,10 @@ void RTC_IntDateDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_DATE_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntDateClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntDateClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -358,11 +358,11 @@ void RTC_IntDateClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_DATE_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntDateStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : uint32_t 1 0
/******************************************************************************************************************************************
* : RTC_IntDateStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : 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 RTCRTC
/******************************************************************************************************************************************
* : RTC_IntAlarmEn()
* : 使
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -382,10 +382,10 @@ void RTC_IntAlarmEn(RTC_TypeDef *RTCx)
RTCx->IE |= (1 << RTC_IE_ALARM_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntAlarmDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntAlarmDis()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -394,10 +394,10 @@ void RTC_IntAlarmDis(RTC_TypeDef *RTCx)
RTCx->IE &= ~(1 << RTC_IE_ALARM_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntAlarmClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
/******************************************************************************************************************************************
* : RTC_IntAlarmClr()
* :
* : RTC_TypeDef * RTCx RTCRTC
* :
* :
******************************************************************************************************************************************/
@@ -406,11 +406,11 @@ void RTC_IntAlarmClr(RTC_TypeDef *RTCx)
RTCx->IF = (1 << RTC_IF_ALARM_Pos);
}
/******************************************************************************************************************************************
* : RTC_IntAlarmStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : uint32_t 1 0
/******************************************************************************************************************************************
* : RTC_IntAlarmStat()
* :
* : RTC_TypeDef * RTCx RTCRTC
* : uint32_t 1 0
* :
******************************************************************************************************************************************/
uint32_t RTC_IntAlarmStat(RTC_TypeDef *RTCx)
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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_NOSD_RESP_32bSD_RESP_128bSD_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_NOSD_RESP_32bSD_RESP_128bSD_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)
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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
* :
* :
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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 TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* uint32_t mode TIMR_MODE_TIMER TIMR_MODE_COUNTER
* uint32_t period /
* uint32_t int_en 使
* : TIMR定时器/
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* 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 TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
/******************************************************************************************************************************************
* : TIMR_Start()
* : /
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* :
* :
******************************************************************************************************************************************/
@@ -112,10 +112,10 @@ void TIMR_Start(TIMR_TypeDef *TIMRx)
TIMRx->CTRL |= TIMR_CTRL_EN_Msk;
}
/******************************************************************************************************************************************
* : TIMR_Stop()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
/******************************************************************************************************************************************
* : TIMR_Stop()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* :
* :
******************************************************************************************************************************************/
@@ -124,10 +124,10 @@ void TIMR_Stop(TIMR_TypeDef *TIMRx)
TIMRx->CTRL &= ~TIMR_CTRL_EN_Msk;
}
/******************************************************************************************************************************************
* : TIMR_Halt()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
/******************************************************************************************************************************************
* : TIMR_Halt()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* :
* :
******************************************************************************************************************************************/
@@ -161,10 +161,10 @@ void TIMR_Halt(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
* : TIMR_Resume()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
/******************************************************************************************************************************************
* : TIMR_Resume()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* :
* :
******************************************************************************************************************************************/
@@ -198,11 +198,11 @@ void TIMR_Resume(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : TIMR_SetPeriod()
* : /
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* uint32_t period /
* : /
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* uint32_t period /
* :
* :
******************************************************************************************************************************************/
@@ -211,11 +211,11 @@ void TIMR_SetPeriod(TIMR_TypeDef *TIMRx, uint32_t period)
TIMRx->LDVAL = period;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : TIMR_GetPeriod()
* : /
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* : uint32_t /
* : /
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* : 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 TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* : uint32_t
/******************************************************************************************************************************************
* : TIMR_GetCurValue()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* : 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 TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
/******************************************************************************************************************************************
* : TIMR_INTEn()
* : 使
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* :
* :
******************************************************************************************************************************************/
@@ -278,10 +278,10 @@ void TIMR_INTEn(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : TIMR_INTDis()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* :
* :
******************************************************************************************************************************************/
@@ -315,10 +315,10 @@ void TIMR_INTDis(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
* : TIMR_INTClr()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
/******************************************************************************************************************************************
* : TIMR_INTClr()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* :
* :
******************************************************************************************************************************************/
@@ -352,11 +352,11 @@ void TIMR_INTClr(TIMR_TypeDef *TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* : TIMR_INTStat()
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* : uint32_t 0 TIMRx未产生中断 1 TIMRx产生了中断
* :
* : TIMR_TypeDef * TIMRx TIMR0TIMR1TIMR2TIMR3TIMR4TIMR5
* : 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
@@ -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 20171025
* :
* : V1.1.0 20171025
* :
*
*
*******************************************************************************************************************************************
* @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)
+353 -473
View File
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