mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-11-08 14:43:04 +08:00
52 files changed
+11451
-11950
No files matched your search
+131
-61
File diff suppressed because it is too large.
Load diff
@@ -93,7 +93,7 @@
|
||||
- 32K片内时钟源
|
||||
- 2~32MHz片外晶振
|
||||
|
||||
芯片更多详细信息请参考[华芯微特技术支持][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)
|
||||
@@ -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");
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 */
|
||||
@@ -475,6 +475,7 @@ static void rt_hw_pin_isr(GPIO_TypeDef *GPIOx)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GPIOA_Handler(void)
|
||||
{
|
||||
rt_interrupt_enter();
|
||||
|
||||
@@ -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,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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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++)
|
||||
{
|
||||
|
||||
@@ -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
File diff suppressed because it is too large.
Load diff
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 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
@@ -43,7 +43,8 @@
|
||||
|
||||
/********************************** PLL 设定 **********************************************
|
||||
* VCO输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV
|
||||
* PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV
|
||||
* PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV
|
||||
* 注意:VCO输出频率需要在 [600MHz, 1200MHz] 之间
|
||||
*****************************************************************************************/
|
||||
#define SYS_PLL_SRC SYS_CLK_20MHz //可取值SYS_CLK_20MHz、SYS_CLK_XTAL
|
||||
|
||||
@@ -60,12 +61,12 @@
|
||||
uint32_t SystemCoreClock = __HSI; //System Clock Frequency (Core Clock)
|
||||
uint32_t CyclesPerUs = (__HSI / 1000000); //Cycles per micro second
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称:
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称:
|
||||
* 功能说明: This function is used to update the variable SystemCoreClock and must be called whenever the core clock is changed
|
||||
* 输 入:
|
||||
* 输 出:
|
||||
* 注意事项:
|
||||
* 输 入:
|
||||
* 输 出:
|
||||
* 注意事项:
|
||||
******************************************************************************************************************************************/
|
||||
void SystemCoreClockUpdate(void)
|
||||
{
|
||||
@@ -114,12 +115,12 @@ void SystemCoreClockUpdate(void)
|
||||
CyclesPerUs = SystemCoreClock / 1000000;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称:
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称:
|
||||
* 功能说明: The necessary initializaiton of systerm
|
||||
* 输 入:
|
||||
* 输 出:
|
||||
* 注意事项:
|
||||
* 输 入:
|
||||
* 输 出:
|
||||
* 注意事项:
|
||||
******************************************************************************************************************************************/
|
||||
void SystemInit(void)
|
||||
{
|
||||
@@ -173,15 +174,29 @@ void SystemInit(void)
|
||||
}
|
||||
}
|
||||
|
||||
void switchCLK_20MHz(void)
|
||||
static void delay_3ms(void)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
if (((SYS->CLKSEL & SYS_CLKSEL_SYS_Msk) == 0) &&
|
||||
((SYS->CLKSEL & SYS_CLKSEL_LFCK_Msk) == 0)) //32KHz
|
||||
{
|
||||
for (i = 0; i < 20; i++)
|
||||
__NOP();
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 20000; i++)
|
||||
__NOP();
|
||||
}
|
||||
}
|
||||
|
||||
void switchCLK_20MHz(void)
|
||||
{
|
||||
SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
|
||||
(0 << SYS_HRCCR_DBL_Pos); //HRC = 20MHz
|
||||
|
||||
for (i = 0; i < 1000; i++)
|
||||
__NOP();
|
||||
delay_3ms();
|
||||
|
||||
SYS->CLKSEL &= ~SYS_CLKSEL_HFCK_Msk; //HFCK <= HRC
|
||||
SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK <= HFCK
|
||||
@@ -189,13 +204,10 @@ void switchCLK_20MHz(void)
|
||||
|
||||
void switchCLK_40MHz(void)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
|
||||
(1 << SYS_HRCCR_DBL_Pos); //HRC = 40MHz
|
||||
|
||||
for (i = 0; i < 1000; i++)
|
||||
__NOP();
|
||||
delay_3ms();
|
||||
|
||||
SYS->CLKSEL &= ~SYS_CLKSEL_HFCK_Msk; //HFCK <= HRC
|
||||
SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK <= HFCK
|
||||
@@ -203,14 +215,11 @@ void switchCLK_40MHz(void)
|
||||
|
||||
void switchCLK_32KHz(void)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
SYS->CLKEN |= (1 << SYS_CLKEN_RTCBKP_Pos);
|
||||
|
||||
SYS->LRCCR &= ~(1 << SYS_LRCCR_OFF_Pos);
|
||||
|
||||
for (i = 0; i < 100; i++)
|
||||
__NOP();
|
||||
delay_3ms();
|
||||
|
||||
SYS->CLKSEL &= ~SYS_CLKSEL_LFCK_Msk; //LFCK <= LRC
|
||||
SYS->CLKSEL &= ~SYS_CLKSEL_SYS_Msk; //SYS_CLK <= LFCK
|
||||
@@ -218,12 +227,10 @@ void switchCLK_32KHz(void)
|
||||
|
||||
void switchCLK_XTAL(void)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
SYS->XTALCR = (1 << SYS_XTALCR_EN_Pos);
|
||||
|
||||
for (i = 0; i < 1000; i++)
|
||||
__NOP();
|
||||
delay_3ms();
|
||||
delay_3ms();
|
||||
|
||||
SYS->CLKSEL |= (1 << SYS_CLKSEL_HFCK_Pos); //HFCK <= XTAL
|
||||
SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK <= HFCK
|
||||
@@ -231,13 +238,9 @@ void switchCLK_XTAL(void)
|
||||
|
||||
void switchCLK_PLL(void)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
PLLInit();
|
||||
SYS->PLLCR |= (1 << SYS_PLLCR_OUTEN_Pos);
|
||||
|
||||
for (i = 0; i < 10000; i++)
|
||||
__NOP();
|
||||
SYS->PLLCR |= (1 << SYS_PLLCR_OUTEN_Pos);
|
||||
|
||||
SYS->CLKSEL |= (1 << SYS_CLKSEL_LFCK_Pos); //LFCK <= PLL
|
||||
SYS->CLKSEL &= ~SYS_CLKSEL_SYS_Msk; //SYS_CLK <= LFCK
|
||||
@@ -245,15 +248,12 @@ void switchCLK_PLL(void)
|
||||
|
||||
void PLLInit(void)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
if (SYS_PLL_SRC == SYS_CLK_20MHz)
|
||||
{
|
||||
SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
|
||||
(0 << SYS_HRCCR_DBL_Pos); //HRC = 20MHz
|
||||
|
||||
for (i = 0; i < 1000; i++)
|
||||
__NOP();
|
||||
delay_3ms();
|
||||
|
||||
SYS->PLLCR |= (1 << SYS_PLLCR_INSEL_Pos); //PLL_SRC <= HRC
|
||||
}
|
||||
@@ -261,8 +261,8 @@ void PLLInit(void)
|
||||
{
|
||||
SYS->XTALCR = (1 << SYS_XTALCR_EN_Pos);
|
||||
|
||||
for (i = 0; i < 20000; i++)
|
||||
;
|
||||
delay_3ms();
|
||||
delay_3ms();
|
||||
|
||||
SYS->PLLCR &= ~(1 << SYS_PLLCR_INSEL_Pos); //PLL_SRC <= XTAL
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
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 2017年10月25日
|
||||
* 升级记录:
|
||||
* 功能说明: SWM320单片机的CRC模块驱动库
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
@@ -21,14 +21,14 @@
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_crc.h"
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: CRC_Init()
|
||||
* 功能说明: CRC 初始化
|
||||
* 输 入: CRC_TypeDef * CRCx 指定要被设置的CRC接口,有效值包括CRC
|
||||
* uint32_t mode 工作模式,有效值有:CRC32_IN32、CRC32_IN16、CRC32_IN8、CRC16_IN16、CRC16_IN8
|
||||
* uint32_t out_not 输出结果是否取反
|
||||
* uint32_t out_rev 输出结果是否翻转
|
||||
* uint32_t ini_val CRC初始值
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: CRC_Init()
|
||||
* 功能说明: CRC 初始化
|
||||
* 输 入: CRC_TypeDef * CRCx 指定要被设置的CRC接口,有效值包括CRC
|
||||
* uint32_t mode 工作模式,有效值有:CRC32_IN32、CRC32_IN16、CRC32_IN8、CRC16_IN16、CRC16_IN8
|
||||
* uint32_t out_not 输出结果是否取反
|
||||
* uint32_t out_rev 输出结果是否翻转
|
||||
* uint32_t ini_val CRC初始值
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
|
||||
@@ -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 2017年10月25日
|
||||
* 升级记录:
|
||||
* 功能说明: SWM320单片机的DMA功能驱动库
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
@@ -21,16 +21,16 @@
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_dma.h"
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: DMA_CHM_Config()
|
||||
* 功能说明: DMA通道配置,用于存储器间(如Flash和RAM间)搬运数据
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* uint32_t src_addr 源地址,必须字对齐,即地址的最低2位必须是00
|
||||
* uint32_t src_addr_incr 0 固定地址 1 地址递增
|
||||
* uint32_t dst_addr 目的地址,必须字对齐,即地址的最低2位必须是00
|
||||
* uint32_t dst_addr_incr 0 固定地址 1 地址递增
|
||||
* uint32_t num_word 要搬运的数据字数,最大1024
|
||||
* uint32_t int_en 中断使能,1 数据搬运完成后产生中断 0 数据搬运完成后不产生中断
|
||||
* 功能说明: DMA通道配置,用于存储器间(如Flash和RAM间)搬运数据
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* uint32_t src_addr 源地址,必须字对齐,即地址的最低2位必须是00
|
||||
* uint32_t src_addr_incr 0 固定地址 1 地址递增
|
||||
* uint32_t dst_addr 目的地址,必须字对齐,即地址的最低2位必须是00
|
||||
* uint32_t dst_addr_incr 0 固定地址 1 地址递增
|
||||
* uint32_t num_word 要搬运的数据字数,最大1024
|
||||
* uint32_t int_en 中断使能,1 数据搬运完成后产生中断 0 数据搬运完成后不产生中断
|
||||
* 输 出: 无
|
||||
* 注意事项: 搬运数据量以字为单元,不是字节
|
||||
******************************************************************************************************************************************/
|
||||
@@ -67,10 +67,10 @@ void DMA_CHM_Config(uint32_t chn, uint32_t src_addr, uint32_t src_addr_incr, uin
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: DMA_CH_Open()
|
||||
* 功能说明: DMA通道打开
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 功能说明: DMA通道打开
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -79,10 +79,10 @@ void DMA_CH_Open(uint32_t chn)
|
||||
DMA->CH[chn].CR |= (1 << DMA_CR_TXEN_Pos);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: DMA_CH_Close()
|
||||
* 功能说明: DMA通道关闭
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 功能说明: DMA通道关闭
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -91,10 +91,10 @@ void DMA_CH_Close(uint32_t chn)
|
||||
DMA->CH[chn].CR &= ~(1 << DMA_CR_TXEN_Pos);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: DMA_CH_INTEn()
|
||||
* 功能说明: DMA中断使能,数据搬运完成后触发中断
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 功能说明: DMA中断使能,数据搬运完成后触发中断
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -103,10 +103,10 @@ void DMA_CH_INTEn(uint32_t chn)
|
||||
DMA->IM &= ~(1 << chn);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: DMA_CH_INTDis()
|
||||
* 功能说明: DMA中断禁止,数据搬运完成后不触发中断
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 功能说明: DMA中断禁止,数据搬运完成后不触发中断
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -115,10 +115,10 @@ void DMA_CH_INTDis(uint32_t chn)
|
||||
DMA->IM |= (1 << chn);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: DMA_CH_INTClr()
|
||||
* 功能说明: DMA中断标志清除
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 功能说明: DMA中断标志清除
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -127,11 +127,11 @@ void DMA_CH_INTClr(uint32_t chn)
|
||||
DMA->IF = (1 << chn);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: DMA_CH_INTStat()
|
||||
* 功能说明: DMA中断状态查询
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 输 出: uint32_t 1 数据搬运完成 0 数据搬运未完成
|
||||
* 功能说明: DMA中断状态查询
|
||||
* 输 入: uint32_t chn 指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
|
||||
* 输 出: uint32_t 1 数据搬运完成 0 数据搬运未完成
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t DMA_CH_INTStat(uint32_t chn)
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_exti.c
|
||||
* 功能说明: SWM320单片机的外部中断功能驱动库
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_exti.c
|
||||
* 功能说明: SWM320单片机的外部中断功能驱动库
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
*******************************************************************************************************************************************/
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_exti.h"
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_Init()
|
||||
* 功能说明: 指定引脚外部中断初始化
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* uint32_t mode 有效值有EXTI_FALL_EDGE、EXTI_RISE_EDGE、EXTI_BOTH_EDGE、EXTI_LOW_LEVEL、EXTI_HIGH_LEVEL
|
||||
* 功能说明: 指定引脚外部中断初始化
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* uint32_t mode 有效值有EXTI_FALL_EDGE、EXTI_RISE_EDGE、EXTI_BOTH_EDGE、EXTI_LOW_LEVEL、EXTI_HIGH_LEVEL
|
||||
* 输 出: 无
|
||||
* 注意事项: 由于GPIOA、GPIOB、GPIOC、GPIOM的PIN0--7引脚即可以接入NVIC中的引脚中断(如GPIOA0_IRQn),也可以接入NVIC的组中断(GPIOA_IRQn),
|
||||
* 所以不在此函数中调用NVIC_EnableIRQ()使能NVIC中断,从而可以根据需要调用NVIC_EnableIRQ(GPIOA0_IRQn)和NVIC_EnableIRQ(GPIOA_IRQn)
|
||||
* 所以不在此函数中调用NVIC_EnableIRQ()使能NVIC中断,从而可以根据需要调用NVIC_EnableIRQ(GPIOA0_IRQn)和NVIC_EnableIRQ(GPIOA_IRQn)
|
||||
******************************************************************************************************************************************/
|
||||
void EXTI_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t mode)
|
||||
{
|
||||
@@ -65,11 +65,11 @@ void EXTI_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t mode)
|
||||
GPIOx->INTCLR = (1 << n); //清除掉因为模式配置可能产生的中断
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_Open()
|
||||
* 功能说明: 指定引脚外部中断打开(即使能)
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_Open()
|
||||
* 功能说明: 指定引脚外部中断打开(即使能)
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -78,11 +78,11 @@ void EXTI_Open(GPIO_TypeDef *GPIOx, uint32_t n)
|
||||
GPIOx->INTEN |= (0x01 << n);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_Close()
|
||||
* 功能说明: 指定引脚外部中断关闭(即禁能)
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_Close()
|
||||
* 功能说明: 指定引脚外部中断关闭(即禁能)
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -91,12 +91,12 @@ void EXTI_Close(GPIO_TypeDef *GPIOx, uint32_t n)
|
||||
GPIOx->INTEN &= ~(0x01 << n);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_State()
|
||||
* 功能说明: 指定引脚是否触发了中断
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* 输 出: uint32_t 1 此引脚触发了中断 0 此引脚未触发中断
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_State()
|
||||
* 功能说明: 指定引脚是否触发了中断
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* 输 出: uint32_t 1 此引脚触发了中断 0 此引脚未触发中断
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t EXTI_State(GPIO_TypeDef *GPIOx, uint32_t n)
|
||||
@@ -104,12 +104,12 @@ uint32_t EXTI_State(GPIO_TypeDef *GPIOx, uint32_t n)
|
||||
return (GPIOx->INTSTAT >> n) & 0x01;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_RawState()
|
||||
* 功能说明: 指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* 输 出: uint32_t 1 此引脚满足过/了中断触发条件 0 此引脚未满足过/了中断触发条件
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_RawState()
|
||||
* 功能说明: 指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* 输 出: uint32_t 1 此引脚满足过/了中断触发条件 0 此引脚未满足过/了中断触发条件
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t EXTI_RawState(GPIO_TypeDef *GPIOx, uint32_t n)
|
||||
@@ -117,11 +117,11 @@ uint32_t EXTI_RawState(GPIO_TypeDef *GPIOx, uint32_t n)
|
||||
return (GPIOx->INTRAWSTAT >> n) & 0x01;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_Clear()
|
||||
* 功能说明: 指定引脚外部中断清除(即清除中断标志,以免再次进入此中断)
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: EXTI_Clear()
|
||||
* 功能说明: 指定引脚外部中断清除(即清除中断标志,以免再次进入此中断)
|
||||
* 输 入: GPIO_TypeDef * GPIOx 指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
|
||||
* uint32_t n 指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* 输 出: 无
|
||||
* 注意事项: 只能清除边沿触发中断的标志,电平触发中断的标志无法清除,只能在引脚电平不符合中断触发条件后硬件自动清除
|
||||
******************************************************************************************************************************************/
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_flash.c
|
||||
* 功能说明: 使用芯片的IAP功能将片上Flash模拟成EEPROM来保存数据,掉电后不丢失
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_flash.c
|
||||
* 功能说明: 使用芯片的IAP功能将片上Flash模拟成EEPROM来保存数据,掉电后不丢失
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
*******************************************************************************************************************************************/
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_flash.h"
|
||||
@@ -24,10 +24,10 @@ IAP_Flash_Param_t IAP_Flash_Param = (IAP_Flash_Param_t)0x11000681;
|
||||
IAP_Flash_Erase_t IAP_Flash_Erase = (IAP_Flash_Erase_t)0x11000781;
|
||||
IAP_Flash_Write_t IAP_Flash_Write = (IAP_Flash_Write_t)0x11000801;
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: FLASH_Erase()
|
||||
* 功能说明: 片内Flash擦除
|
||||
* 输 入: uint32_t addr 擦除地址,扇区大小为4K Byte
|
||||
* 功能说明: 片内Flash擦除
|
||||
* 输 入: uint32_t addr 擦除地址,扇区大小为4K Byte
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -42,12 +42,12 @@ void FLASH_Erase(uint32_t addr)
|
||||
__enable_irq();
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: FLASH_Write()
|
||||
* 功能说明: 片内Flash写入
|
||||
* 输 入: uint32_t addr 写入地址
|
||||
* uint32_t buff[] 要写入的数据
|
||||
* uint32_t count 要写入数据的个数,以字为单位,且必须是4的整数倍,即最少写入4个字
|
||||
* 功能说明: 片内Flash写入
|
||||
* 输 入: uint32_t addr 写入地址
|
||||
* uint32_t buff[] 要写入的数据
|
||||
* uint32_t count 要写入数据的个数,以字为单位,且必须是4的整数倍,即最少写入4个字
|
||||
* 输 出: 无
|
||||
* 注意事项: 写入数据个数必须是4的整数倍,即最少写入4个字
|
||||
******************************************************************************************************************************************/
|
||||
@@ -62,10 +62,10 @@ void FLASH_Write(uint32_t addr, uint32_t buff[], uint32_t count)
|
||||
__enable_irq();
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: Flash_Param_at_xMHz()
|
||||
* 功能说明: 将Flash参数设置成xMHz主频下运行时所需的参数
|
||||
* 输 入: uint32_t x 可取值
|
||||
* 功能说明: 将Flash参数设置成xMHz主频下运行时所需的参数
|
||||
* 输 入: uint32_t x 可取值
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,18 +1,18 @@
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_i2c.c
|
||||
* 功能说明: SWM320单片机的I2C串行接口功能驱动库
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_i2c.c
|
||||
* 功能说明: SWM320单片机的I2C串行接口功能驱动库
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIES AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIEE. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIES ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIES AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIEE. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIES ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
@@ -21,11 +21,11 @@
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_i2c.h"
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Init()
|
||||
* 功能说明: I2C初始化
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* I2C_InitStructure * initStruct 包含I2C相关设定值的结构体
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Init()
|
||||
* 功能说明: I2C初始化
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* I2C_InitStructure * initStruct 包含I2C相关设定值的结构体
|
||||
* 输 出: 无
|
||||
* 注意事项: 模块只能工作于主机模式
|
||||
******************************************************************************************************************************************/
|
||||
@@ -125,10 +125,10 @@ void I2C_Init(I2C_TypeDef *I2Cx, I2C_InitStructure *initStruct)
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Open()
|
||||
* 功能说明: I2C打开,允许收发
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Open()
|
||||
* 功能说明: I2C打开,允许收发
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -137,10 +137,10 @@ void I2C_Open(I2C_TypeDef *I2Cx)
|
||||
I2Cx->CTRL |= (0x01 << I2C_CTRL_EN_Pos);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Close()
|
||||
* 功能说明: I2C关闭,禁止收发
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Close()
|
||||
* 功能说明: I2C关闭,禁止收发
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -149,12 +149,12 @@ void I2C_Close(I2C_TypeDef *I2Cx)
|
||||
I2Cx->CTRL &= ~I2C_CTRL_EN_Msk;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Start()
|
||||
* 功能说明: 产生起始信号并发送设备地址
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* uint8_t addr 设备地址
|
||||
* 输 出: uint8_t 1 接收到ACK 0 接收到NACK
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Start()
|
||||
* 功能说明: 产生起始信号并发送设备地址
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* uint8_t addr 设备地址
|
||||
* 输 出: uint8_t 1 接收到ACK 0 接收到NACK
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint8_t I2C_Start(I2C_TypeDef *I2Cx, uint8_t addr)
|
||||
@@ -168,10 +168,10 @@ uint8_t I2C_Start(I2C_TypeDef *I2Cx, uint8_t addr)
|
||||
return (I2Cx->MSTCMD & I2C_MSTCMD_RXACK_Msk) ? 0 : 1;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Stop()
|
||||
* 功能说明: 产生停止信号
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Stop()
|
||||
* 功能说明: 产生停止信号
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -182,12 +182,12 @@ void I2C_Stop(I2C_TypeDef *I2Cx)
|
||||
__NOP(); //等待发送完成
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Write()
|
||||
* 功能说明: 写入一个数据
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* uint8_t data 要写的数据
|
||||
* 输 出: uint8_t 1 接收到ACK 0 接收到NACK
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Write()
|
||||
* 功能说明: 写入一个数据
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* uint8_t data 要写的数据
|
||||
* 输 出: uint8_t 1 接收到ACK 0 接收到NACK
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint8_t I2C_Write(I2C_TypeDef *I2Cx, uint8_t data)
|
||||
@@ -200,12 +200,12 @@ uint8_t I2C_Write(I2C_TypeDef *I2Cx, uint8_t data)
|
||||
return (I2Cx->MSTCMD & I2C_MSTCMD_RXACK_Msk) ? 0 : 1;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Read()
|
||||
* 功能说明: 读取一个数据
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* uint8_t ack 1 发送ACK 0 发送NACK
|
||||
* 输 出: uint8_t 读取到的数据
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: I2C_Read()
|
||||
* 功能说明: 读取一个数据
|
||||
* 输 入: I2C_TypeDef * I2Cx 指定要被设置的I2C,有效值包括I2C0、I2C1
|
||||
* uint8_t ack 1 发送ACK 0 发送NACK
|
||||
* 输 出: uint8_t 读取到的数据
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint8_t I2C_Read(I2C_TypeDef *I2Cx, uint8_t ack)
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_lcd.c
|
||||
* 功能说明: SWM320单片机的LCD功能驱动库
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
* 功能说明: SWM320单片机的LCD功能驱动库
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
@@ -23,11 +23,11 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: LCD_Init()
|
||||
* 功能说明: LCD初始化
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* LCD_InitStructure * initStruct 包含LCD相关设定值的结构体
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: LCD_Init()
|
||||
* 功能说明: LCD初始化
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* LCD_InitStructure * initStruct 包含LCD相关设定值的结构体
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -74,10 +74,10 @@ void LCD_Init(LCD_TypeDef *LCDx, LCD_InitStructure *initStruct)
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: LCD_Start()
|
||||
* 功能说明: 启动一次数据传输
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 功能说明: 启动一次数据传输
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -86,11 +86,11 @@ void LCD_Start(LCD_TypeDef *LCDx)
|
||||
LCDx->START |= (1 << LCD_START_GO_Pos) | (1 << LCD_START_BURST_Pos);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: LCD_IsBusy()
|
||||
* 功能说明: 是否正在进行数据传输
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 输 出: uint32_t 1 正在传输数据 0 数据传输已完成
|
||||
* 功能说明: 是否正在进行数据传输
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 输 出: uint32_t 1 正在传输数据 0 数据传输已完成
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t LCD_IsBusy(LCD_TypeDef *LCDx)
|
||||
@@ -98,10 +98,10 @@ uint32_t LCD_IsBusy(LCD_TypeDef *LCDx)
|
||||
return (LCDx->START & LCD_START_GO_Msk) ? 1 : 0;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: LCD_INTEn()
|
||||
* 功能说明: LCD中断使能,完成指定长度的数据传输时触发中断
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 功能说明: LCD中断使能,完成指定长度的数据传输时触发中断
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -110,10 +110,10 @@ void LCD_INTEn(LCD_TypeDef *LCDx)
|
||||
LCDx->IM = 0;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: LCD_INTDis()
|
||||
* 功能说明: LCD中断禁止,完成指定长度的数据传输时不触发中断
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 功能说明: LCD中断禁止,完成指定长度的数据传输时不触发中断
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -122,10 +122,10 @@ void LCD_INTDis(LCD_TypeDef *LCDx)
|
||||
LCDx->IM = 1;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: LCD_INTClr()
|
||||
* 功能说明: LCD中断标志清除
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 功能说明: LCD中断标志清除
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -134,11 +134,11 @@ void LCD_INTClr(LCD_TypeDef *LCDx)
|
||||
LCDx->IF = 1;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: LCD_INTStat()
|
||||
* 功能说明: LCD中断状态查询
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 输 出: uint32_t 1 完成指定长度的数据传输 0 未完成指定长度的数据传输
|
||||
* 功能说明: LCD中断状态查询
|
||||
* 输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括LCD
|
||||
* 输 出: uint32_t 1 完成指定长度的数据传输 0 未完成指定长度的数据传输
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t LCD_INTStat(LCD_TypeDef *LCDx)
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_norflash.c
|
||||
* 功能说明: SWM320单片机的NOR Flash驱动程序
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 功能说明: SWM320单片机的NOR Flash驱动程序
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
*******************************************************************************************************************************************/
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_norflash.h"
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_Init()
|
||||
* 功能说明: NOR Flash控制器初始化
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_Init()
|
||||
* 功能说明: NOR Flash控制器初始化
|
||||
* 输 入: NORFL_InitStructure * initStruct 包含NOR Flash控制器相关设定值的结构体
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
@@ -64,11 +64,11 @@ void NORFL_Init(NORFL_InitStructure *initStruct)
|
||||
NORFLC->IM |= (1 << NORFLC_IM_TIMEOUT_Pos);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_ChipErase()
|
||||
* 功能说明: NOR Flash整片擦除
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_ChipErase()
|
||||
* 功能说明: NOR Flash整片擦除
|
||||
* 输 入: 无
|
||||
* 输 出: uint32_t 0 擦除成功 1 擦除超时
|
||||
* 输 出: uint32_t 0 擦除成功 1 擦除超时
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t NORFL_ChipErase(void)
|
||||
@@ -91,11 +91,11 @@ uint32_t NORFL_ChipErase(void)
|
||||
return res;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_SectorErase()
|
||||
* 功能说明: NOR Flash扇区擦除
|
||||
* 输 入: uint32_t addr 要擦除扇区的起始地址
|
||||
* 输 出: uint32_t 0 擦除成功 1 擦除超时
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_SectorErase()
|
||||
* 功能说明: NOR Flash扇区擦除
|
||||
* 输 入: uint32_t addr 要擦除扇区的起始地址
|
||||
* 输 出: uint32_t 0 擦除成功 1 擦除超时
|
||||
* 注意事项: MX29LV128DB 前8扇区为8K、后255扇区为64K MX29LV128DT 前255扇区为64K、后8扇区为8K
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t NORFL_SectorErase(uint32_t addr)
|
||||
@@ -119,12 +119,12 @@ uint32_t NORFL_SectorErase(uint32_t addr)
|
||||
return res;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_Write()
|
||||
* 功能说明: NOR Flash写
|
||||
* 输 入: uint32_t addr 数据要写入的地址
|
||||
* uint32_t data 要写入的数据
|
||||
* 输 出: uint32_t 0 写入成功 1 写入超时
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_Write()
|
||||
* 功能说明: NOR Flash写
|
||||
* 输 入: uint32_t addr 数据要写入的地址
|
||||
* uint32_t data 要写入的数据
|
||||
* 输 出: uint32_t 0 写入成功 1 写入超时
|
||||
* 注意事项: 硬件连接,数据线为16位时,半字写入;数据线为8位时,字节写入
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t NORFL_Write(uint32_t addr, uint32_t data)
|
||||
@@ -148,11 +148,11 @@ uint32_t NORFL_Write(uint32_t addr, uint32_t data)
|
||||
return res;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_Read()
|
||||
* 功能说明: NOR Flash读
|
||||
* 输 入: uint32_t addr 数据要读出的地址
|
||||
* 输 出: uint32_t 读出的数据
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_Read()
|
||||
* 功能说明: NOR Flash读
|
||||
* 输 入: uint32_t addr 数据要读出的地址
|
||||
* 输 出: uint32_t 读出的数据
|
||||
* 注意事项: 硬件连接,数据线为16位时,半字读出;数据线为8位时,字节读出
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t NORFL_Read(uint32_t addr)
|
||||
@@ -163,11 +163,11 @@ uint32_t NORFL_Read(uint32_t addr)
|
||||
return (NORFLC->CMD & NORFLC_CMD_DATA_Msk);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_ReadID()
|
||||
* 功能说明: NOR Flash读ID
|
||||
* 输 入: uint32_t id_addr ID地址,此参数是芯片相关的,每种芯片都不同
|
||||
* 输 出: uint16_t 读取到的ID
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: NORFL_ReadID()
|
||||
* 功能说明: NOR Flash读ID
|
||||
* 输 入: uint32_t id_addr ID地址,此参数是芯片相关的,每种芯片都不同
|
||||
* 输 出: uint16_t 读取到的ID
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint16_t NORFL_ReadID(uint32_t id_addr)
|
||||
|
||||
@@ -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 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
*******************************************************************************************************************************************/
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_port.h"
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: PORT_Init()
|
||||
* 功能说明: 端口引脚功能选择,可用的功能见"SWM320_port.h"文件
|
||||
* 输 入: uint32_t PORTx 指定PORT端口,有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、PORTP
|
||||
* uint32_t n 指定PORT引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* uint32_t func 指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
|
||||
* uint32_t digit_in_en 数字输入使能
|
||||
* 功能说明: 端口引脚功能选择,可用的功能见"SWM320_port.h"文件
|
||||
* 输 入: uint32_t PORTx 指定PORT端口,有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、PORTP
|
||||
* uint32_t n 指定PORT引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
|
||||
* uint32_t func 指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
|
||||
* uint32_t digit_in_en 数字输入使能
|
||||
* 输 出: 无
|
||||
* 注意事项: 当引脚标号n为偶数时,func取值只能是FUNMUX0开头的,如FUNMUX0_UART0_RXD
|
||||
* 当引脚标号n为奇数时,func取值只能是FUNMUX1开头的,如FUNMUX1_UART0_TXD
|
||||
* 当引脚标号n为奇数时,func取值只能是FUNMUX1开头的,如FUNMUX1_UART0_TXD
|
||||
******************************************************************************************************************************************/
|
||||
void PORT_Init(uint32_t PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en)
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1,18 +1,18 @@
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_sdio.c
|
||||
* 功能说明: SWM320单片机的SDIO接口驱动库
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 功能说明: SWM320单片机的SDIO接口驱动库
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项: 为了通用性、兼容性、易用性,只支持以512字节为单位的读写
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
@@ -23,11 +23,11 @@
|
||||
|
||||
SD_CardInfo SD_cardInfo;
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDIO_Init()
|
||||
* 功能说明: SDIO读写SD卡初始化,初始化成高速4线模式、读写以512字节大小进行
|
||||
* 输 入: uint32_t freq SDIO_CLK时钟频率
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 功能说明: SDIO读写SD卡初始化,初始化成高速4线模式、读写以512字节大小进行
|
||||
* 输 入: uint32_t freq SDIO_CLK时钟频率
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t SDIO_Init(uint32_t freq)
|
||||
@@ -125,12 +125,12 @@ uint32_t SDIO_Init(uint32_t freq)
|
||||
return SD_RES_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDIO_BlockWrite()
|
||||
* 功能说明: 向SD卡写入数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint32_t buff[] 要写入的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 功能说明: 向SD卡写入数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint32_t buff[] 要写入的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
|
||||
@@ -161,13 +161,13 @@ uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
|
||||
return SD_RES_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDIO_MultiBlockWrite()
|
||||
* 功能说明: 向SD卡写入多块数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint16_t block_cnt 要写入的块数
|
||||
* uint32_t buff[] 要写入的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 功能说明: 向SD卡写入多块数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint16_t block_cnt 要写入的块数
|
||||
* uint32_t buff[] 要写入的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t SDIO_MultiBlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
|
||||
@@ -201,13 +201,13 @@ uint32_t SDIO_MultiBlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t
|
||||
return SD_RES_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDIO_DMABlockWrite()
|
||||
* 功能说明: 通过DMA向SD卡写入多块数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint16_t block_cnt 要写入的块数
|
||||
* uint32_t buff[] 要写入的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 功能说明: 通过DMA向SD卡写入多块数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint16_t block_cnt 要写入的块数
|
||||
* uint32_t buff[] 要写入的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t SDIO_DMABlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
|
||||
@@ -233,12 +233,12 @@ uint32_t SDIO_DMABlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t bu
|
||||
return SD_RES_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDIO_BlockRead()
|
||||
* 功能说明: 从SD卡读出数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint32_t buff[] 读出的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 功能说明: 从SD卡读出数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint32_t buff[] 读出的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
|
||||
@@ -269,13 +269,13 @@ uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
|
||||
return SD_RES_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDIO_MultiBlockRead()
|
||||
* 功能说明: 从SD卡读出多块数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint16_t block_cnt 要读出的块数
|
||||
* uint32_t buff[] 读出的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 功能说明: 从SD卡读出多块数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint16_t block_cnt 要读出的块数
|
||||
* uint32_t buff[] 读出的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
|
||||
@@ -309,13 +309,13 @@ uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t b
|
||||
return SD_RES_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDIO_DMABlockRead()
|
||||
* 功能说明: 通过DMA从SD卡读出多块数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint16_t block_cnt 要读出的块数
|
||||
* uint32_t buff[] 读出的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 功能说明: 通过DMA从SD卡读出多块数据
|
||||
* 输 入: uint32_t block_addr SD卡块地址,每块512字节
|
||||
* uint16_t block_cnt 要读出的块数
|
||||
* uint32_t buff[] 读出的数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t SDIO_DMABlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
|
||||
@@ -341,18 +341,18 @@ uint32_t SDIO_DMABlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buf
|
||||
return SD_RES_OK;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: _SDIO_SendCmd()
|
||||
* 功能说明: SDIO向SD卡发送命令
|
||||
* 输 入: uint32_t cmd 命令索引
|
||||
* uint32_t arg 命令参数
|
||||
* uint32_t resp_type 响应类型,取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、SD_RESP_32b_busy
|
||||
* uint32_t *resp_data 响应内容
|
||||
* uint32_t have_data 是否有数据传输
|
||||
* uint32_t data_read 1 读SD卡 0 写SD卡
|
||||
* uint16_t block_cnt 读写块个数
|
||||
* uint32_t use_dma 1 使用DMA搬运数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 功能说明: SDIO向SD卡发送命令
|
||||
* 输 入: uint32_t cmd 命令索引
|
||||
* uint32_t arg 命令参数
|
||||
* uint32_t resp_type 响应类型,取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、SD_RESP_32b_busy
|
||||
* uint32_t *resp_data 响应内容
|
||||
* uint32_t have_data 是否有数据传输
|
||||
* uint32_t data_read 1 读SD卡 0 写SD卡
|
||||
* uint16_t block_cnt 读写块个数
|
||||
* uint32_t use_dma 1 使用DMA搬运数据
|
||||
* 输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t _SDIO_SendCmd(uint32_t cmd, uint32_t arg, uint32_t resp_type, uint32_t *resp_data, uint32_t have_data, uint32_t data_read, uint16_t block_cnt, uint32_t use_dma)
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_sdram.c
|
||||
* 功能说明: SWM320单片机的SDRAM驱动程序
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 功能说明: SWM320单片机的SDRAM驱动程序
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
*******************************************************************************************************************************************/
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_sdram.h"
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDRAM_Init()
|
||||
* 功能说明: SDRAM控制器初始化
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDRAM_Init()
|
||||
* 功能说明: SDRAM控制器初始化
|
||||
* 输 入: SDRAM_InitStructure * initStruct 包含 SDRAM 控制器相关设定值的结构体
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
@@ -79,9 +79,9 @@ void SDRAM_Init(SDRAM_InitStructure *initStruct)
|
||||
;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDRAM_Enable()
|
||||
* 功能说明: SDRAM使能,使能后可读写SDRAM
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDRAM_Enable()
|
||||
* 功能说明: SDRAM使能,使能后可读写SDRAM
|
||||
* 输 入: 无
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
@@ -97,9 +97,9 @@ void SDRAM_Enable(void)
|
||||
__NOP();
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDRAM_Disable()
|
||||
* 功能说明: SDRAM禁能,禁能后SDRAM颗粒进入低功耗模式、并自刷新,不可读写
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SDRAM_Disable()
|
||||
* 功能说明: SDRAM禁能,禁能后SDRAM颗粒进入低功耗模式、并自刷新,不可读写
|
||||
* 输 入: 无
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,29 +1,29 @@
|
||||
/******************************************************************************************************************************************
|
||||
/******************************************************************************************************************************************
|
||||
* 文件名称: SWM320_sram.c
|
||||
* 功能说明: SWM320单片机的SRAM驱动程序
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 功能说明: SWM320单片机的SRAM驱动程序
|
||||
* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
|
||||
* 注意事项:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
* COPYRIGHT 2012 Synwit Technology
|
||||
*******************************************************************************************************************************************/
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_sram.h"
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SRAM_Init()
|
||||
* 功能说明: SRAM控制器初始化
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: SRAM_Init()
|
||||
* 功能说明: SRAM控制器初始化
|
||||
* 输 入: SRAM_InitStructure * initStruct 包含 SRAM 控制器相关设定值的结构体
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
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 2017年10月25日
|
||||
* 升级记录:
|
||||
* 版本日期: V1.1.0 2017年10月25日
|
||||
* 升级记录:
|
||||
*
|
||||
*
|
||||
*******************************************************************************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
|
||||
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
|
||||
* -ECTION WITH THEIR PRODUCTS.
|
||||
*
|
||||
@@ -21,14 +21,14 @@
|
||||
#include "SWM320.h"
|
||||
#include "SWM320_wdt.h"
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_Init()
|
||||
* 功能说明: WDT看门狗初始化
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* uint32_t peroid 取值0--4294967295,单位为单片机系统时钟周期
|
||||
* uint32_t mode WDT_MODE_RESET 超时产生复位 WDT_MODE_INTERRUPT 超时产生中断
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_Init()
|
||||
* 功能说明: WDT看门狗初始化
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* uint32_t peroid 取值0--4294967295,单位为单片机系统时钟周期
|
||||
* uint32_t mode WDT_MODE_RESET 超时产生复位 WDT_MODE_INTERRUPT 超时产生中断
|
||||
* 输 出: 无
|
||||
* 注意事项: 复位使能时中断不起作用,因为计数周期结束时芯片直接复位了,无法响应中断
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
void WDT_Init(WDT_TypeDef *WDTx, uint32_t peroid, uint32_t mode)
|
||||
{
|
||||
@@ -36,26 +36,28 @@ void WDT_Init(WDT_TypeDef *WDTx, uint32_t peroid, uint32_t mode)
|
||||
|
||||
WDT_Stop(WDTx); //设置前先关闭
|
||||
|
||||
WDTx->LOAD = peroid;
|
||||
|
||||
if (mode == WDT_MODE_RESET)
|
||||
{
|
||||
WDTx->LOAD = peroid / 2; //第一个计数周期置位中断标志、第二个计数周期将芯片复位
|
||||
|
||||
NVIC_DisableIRQ(WDT_IRQn);
|
||||
|
||||
WDTx->CR |= (1 << WDT_CR_RSTEN_Pos);
|
||||
}
|
||||
else //mode == WDT_MODE_INTERRUPT
|
||||
{
|
||||
WDTx->LOAD = peroid;
|
||||
|
||||
NVIC_EnableIRQ(WDT_IRQn);
|
||||
|
||||
WDTx->CR &= ~(1 << WDT_CR_RSTEN_Pos);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_Start()
|
||||
* 功能说明: 启动指定WDT,开始倒计时
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_Start()
|
||||
* 功能说明: 启动指定WDT,开始倒计时
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -64,10 +66,10 @@ void WDT_Start(WDT_TypeDef *WDTx)
|
||||
WDTx->CR |= (0x01 << WDT_CR_EN_Pos);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_Stop()
|
||||
* 功能说明: 关闭指定WDT,停止倒计时
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_Stop()
|
||||
* 功能说明: 关闭指定WDT,停止倒计时
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -76,10 +78,10 @@ void WDT_Stop(WDT_TypeDef *WDTx)
|
||||
WDTx->CR &= ~(0x01 << WDT_CR_EN_Pos);
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_Feed()
|
||||
* 功能说明: 喂狗,重新从装载值开始倒计时
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_Feed()
|
||||
* 功能说明: 喂狗,重新从装载值开始倒计时
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -88,11 +90,11 @@ void WDT_Feed(WDT_TypeDef *WDTx)
|
||||
WDTx->FEED = 0x55;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_GetValue()
|
||||
* 功能说明: 获取指定看门狗定时器的当前倒计时值
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* 输 出: int32_t 看门狗当前计数值
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_GetValue()
|
||||
* 功能说明: 获取指定看门狗定时器的当前倒计时值
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* 输 出: int32_t 看门狗当前计数值
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
int32_t WDT_GetValue(WDT_TypeDef *WDTx)
|
||||
@@ -100,10 +102,10 @@ int32_t WDT_GetValue(WDT_TypeDef *WDTx)
|
||||
return WDTx->VALUE;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_INTClr()
|
||||
* 功能说明: 中断标志清除
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_INTClr()
|
||||
* 功能说明: 中断标志清除
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* 输 出: 无
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
@@ -112,11 +114,11 @@ void WDT_INTClr(WDT_TypeDef *WDTx)
|
||||
WDTx->IF = 1;
|
||||
}
|
||||
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_INTStat()
|
||||
* 功能说明: 中断状态查询
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* 输 出: int32_t 1 发生中断溢出 0 未发生中断溢出
|
||||
/******************************************************************************************************************************************
|
||||
* 函数名称: WDT_INTStat()
|
||||
* 功能说明: 中断状态查询
|
||||
* 输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括WDT
|
||||
* 输 出: int32_t 1 发生中断溢出 0 未发生中断溢出
|
||||
* 注意事项: 无
|
||||
******************************************************************************************************************************************/
|
||||
uint32_t WDT_INTStat(WDT_TypeDef *WDTx)
|
||||
|
||||
+353
-473
File diff suppressed because it is too large.
Load diff
+137
-187
File diff suppressed because it is too large.
Load diff
+23
-10
@@ -16,6 +16,9 @@
|
||||
#define RT_USING_IDLE_HOOK
|
||||
#define RT_IDLE_HOOK_LIST_SIZE 4
|
||||
#define IDLE_THREAD_STACK_SIZE 256
|
||||
|
||||
/* kservice optimization */
|
||||
|
||||
#define RT_DEBUG
|
||||
#define RT_DEBUG_COLOR
|
||||
|
||||
@@ -39,8 +42,8 @@
|
||||
#define RT_USING_DEVICE
|
||||
#define RT_USING_CONSOLE
|
||||
#define RT_CONSOLEBUF_SIZE 128
|
||||
#define RT_CONSOLE_DEVICE_NAME "uart0"
|
||||
#define RT_VER_NUM 0x40003
|
||||
#define RT_CONSOLE_DEVICE_NAME "uart1"
|
||||
#define RT_VER_NUM 0x40004
|
||||
#define ARCH_ARM
|
||||
#define RT_USING_CPU_FFS
|
||||
#define ARCH_ARM_CORTEX_M
|
||||
@@ -59,16 +62,17 @@
|
||||
/* Command shell */
|
||||
|
||||
#define RT_USING_FINSH
|
||||
#define RT_USING_MSH
|
||||
#define FINSH_USING_MSH
|
||||
#define FINSH_THREAD_NAME "tshell"
|
||||
#define FINSH_THREAD_PRIORITY 20
|
||||
#define FINSH_THREAD_STACK_SIZE 4096
|
||||
#define FINSH_USING_HISTORY
|
||||
#define FINSH_HISTORY_LINES 5
|
||||
#define FINSH_USING_SYMTAB
|
||||
#define FINSH_USING_DESCRIPTION
|
||||
#define FINSH_THREAD_PRIORITY 20
|
||||
#define FINSH_THREAD_STACK_SIZE 4096
|
||||
#define FINSH_CMD_SIZE 80
|
||||
#define FINSH_USING_MSH
|
||||
#define FINSH_USING_MSH_DEFAULT
|
||||
#define MSH_USING_BUILT_IN_COMMANDS
|
||||
#define FINSH_USING_DESCRIPTION
|
||||
#define FINSH_ARG_MAX 10
|
||||
|
||||
/* Device virtual file system */
|
||||
@@ -79,6 +83,7 @@
|
||||
#define RT_USING_DEVICE_IPC
|
||||
#define RT_PIPE_BUFSZ 512
|
||||
#define RT_USING_SERIAL
|
||||
#define RT_USING_SERIAL_V1
|
||||
#define RT_SERIAL_RB_BUFSZ 64
|
||||
#define RT_USING_PIN
|
||||
|
||||
@@ -88,6 +93,7 @@
|
||||
/* POSIX layer and C standard library */
|
||||
|
||||
#define RT_USING_LIBC
|
||||
#define RT_LIBC_DEFAULT_TIMEZONE 8
|
||||
|
||||
/* Network */
|
||||
|
||||
@@ -109,6 +115,9 @@
|
||||
/* Utilities */
|
||||
|
||||
|
||||
/* RT-Thread Utestcases */
|
||||
|
||||
|
||||
/* RT-Thread online packages */
|
||||
|
||||
/* IoT - internet of things */
|
||||
@@ -139,6 +148,8 @@
|
||||
|
||||
/* system packages */
|
||||
|
||||
/* acceleration: Assembly language or algorithmic acceleration packages */
|
||||
|
||||
|
||||
/* Micrium: Micrium software products porting for RT-Thread */
|
||||
|
||||
@@ -146,13 +157,15 @@
|
||||
/* peripheral libraries and drivers */
|
||||
|
||||
|
||||
/* miscellaneous packages */
|
||||
/* AI packages */
|
||||
|
||||
|
||||
/* miscellaneous packages */
|
||||
|
||||
/* samples: kernel and components samples */
|
||||
|
||||
|
||||
/* games: games run on RT-Thread console */
|
||||
/* entertainment: terminal games and other interesting software packages */
|
||||
|
||||
|
||||
/* Hardware Drivers Config */
|
||||
@@ -162,7 +175,7 @@
|
||||
/* On-chip Peripheral Drivers */
|
||||
|
||||
#define BSP_USING_UART
|
||||
#define BSP_USING_UART0
|
||||
#define BSP_USING_UART1
|
||||
#define BSP_USING_GPIO
|
||||
|
||||
/* Onboard Peripheral Drivers */
|
||||
|
||||
Reference in new issue
Block a user