Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
RT-Thread
rt-thread
提交
22513fe8
R
rt-thread
项目概览
RT-Thread
/
rt-thread
大约 1 年 前同步成功
通知
774
Star
8911
Fork
4735
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
22513fe8
编写于
5月 06, 2021
作者:
Y
yanmowudi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update swm320 libraries
上级
ed900427
变更
38
展开全部
隐藏空白更改
内联
并排
Showing
38 changed file
with
4994 addition
and
5003 deletion
+4994
-5003
bsp/swm320/libraries/CMSIS/DeviceSupport/SWM320.h
bsp/swm320/libraries/CMSIS/DeviceSupport/SWM320.h
+3346
-3287
bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.c
bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.c
+222
-204
bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.h
bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.h
+16
-12
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.c
+149
-149
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.h
+39
-39
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_can.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_can.c
+6
-90
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_can.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_can.h
+23
-29
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_crc.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_crc.h
+15
-15
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_dma.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_dma.h
+7
-7
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_exti.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_exti.h
+11
-11
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.c
+41
-25
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.h
+1
-1
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_gpio.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_gpio.c
+1
-1
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_gpio.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_gpio.h
+9
-9
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_i2c.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_i2c.h
+11
-11
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.c
+55
-64
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.h
+1
-8
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_norflash.h
...wm320/libraries/SWM320_StdPeriph_Driver/SWM320_norflash.h
+5
-5
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_port.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_port.c
+15
-15
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_port.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_port.h
+4
-4
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.c
+115
-115
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.h
+37
-37
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.c
+142
-142
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.h
+7
-7
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.c
+82
-82
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.h
+8
-8
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.c
+23
-23
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.h
+8
-8
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.c
+203
-203
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.h
+21
-21
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sram.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sram.c
+13
-13
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sram.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sram.h
+2
-2
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.c
+91
-91
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.h
+14
-14
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.c
+184
-184
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.h
+16
-16
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.c
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.c
+44
-44
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.h
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.h
+7
-7
未找到文件。
bsp/swm320/libraries/CMSIS/DeviceSupport/SWM320.h
浏览文件 @
22513fe8
此差异已折叠。
点击以展开。
bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
文件名称
: system_SWM320.c
*
文
件名称: system_SWM320.c
*
功能说明: SWM320单片机的时钟设置
*
功能说明: SWM32
0单片机的时钟设置
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
注
意事项:
*
版本日期: V1.1.0 2017年10月25日
*
版本日期: V1.1.0 2017年
10月25日
*
升级记录:
*
升级记
录:
*
*
*
*
*******************************************************************************************************************************************
*******************************************************************************************************************************************
* @attention
* @attention
*
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* 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
* 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
* 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-
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
* -ECTION WITH THEIR PRODUCTS.
*
*
* COPYRIGHT 2012 Synwit Technology
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
*******************************************************************************************************************************************/
#include <stdint.h>
#include <stdint.h>
#include "SWM320.h"
#include "SWM320.h"
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
系统时钟设定
*
系统时钟
设定
*****************************************************************************************************************************************/
*****************************************************************************************************************************************/
#define SYS_CLK_20MHz
0 //0 内部高频20MHz RC振荡器
#define SYS_CLK_20MHz
0 //0 内部高频20MHz
RC振荡器
#define SYS_CLK_40MHz
1 //1 内部高频40MHz RC振荡器
#define SYS_CLK_40MHz
1 //1 内部高频40MHz
RC振荡器
#define SYS_CLK_32KHz
2 //2 内部低频32KHz RC振荡器
#define SYS_CLK_32KHz
2 //2 内部低频32KHz
RC振荡器
#define SYS_CLK_XTAL
3 //3 外部晶体振荡器(2-30MHz)
#define SYS_CLK_XTAL
3 //3 外部晶体振荡器(
2-30MHz)
#define SYS_CLK_PLL
4 //4 片内锁相环输出
#define SYS_CLK_PLL
4 //4 片内
锁相环输出
#define SYS_CLK SYS_CLK_PLL
#define SYS_CLK
SYS_CLK_PLL
#define SYS_CLK_DIV_1 0
#define SYS_CLK_DIV_2 1
#define SYS_CLK_DIV SYS_CLK_DIV_1
#define SYS_CLK_DIV_1 0
#define SYS_CLK_DIV_2 1
#define __HSI (20000000UL) //高速内部时钟
#define SYS_CLK_DIV SYS_CLK_DIV_1
#define __LSI (32000UL) //低速内部时钟
#define __HSE (20000000UL) //高速外部时钟
/********************************** PLL 设定 **********************************************
* VCO输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV
* PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV
*****************************************************************************************/
#define SYS_PLL_SRC SYS_CLK_20MHz //可取值SYS_CLK_20MHz、SYS_CLK_XTAL
#define PLL_IN_DIV 5
#define __HSI (20000000UL) //高速内部时钟
#define __LSI ( 32000UL) //低速内部时钟
#define __HSE (20000000UL) //高速外部时钟
#define PLL_FB_DIV 60
#define PLL_OUT_DIV8 0
/********************************** PLL 设定 **********************************************
#define PLL_OUT_DIV4 1
* VCO输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV
#define PLL_OUT_DIV2 2
* PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV
*****************************************************************************************/
#define SYS_PLL_SRC SYS_CLK_20MHz //可取值SYS_CLK_20MHz、SYS_CLK_XTAL
#define PLL_
OUT_DIV PLL_OUT_DIV8
#define PLL_
IN_DIV 5
uint32_t
SystemCoreClock
=
__HSI
;
//System Clock Frequency (Core Clock)
#define PLL_FB_DIV 60
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
)
{
if
(
SYS
->
CLKSEL
&
SYS_CLKSEL_SYS_Msk
)
//SYS_CLK <= HFCK
{
if
(
SYS
->
CLKSEL
&
SYS_CLKSEL_HFCK_Msk
)
//HFCK <= XTAL
{
SystemCoreClock
=
__HSE
;
}
else
//HFCK <= HRC
{
if
(
SYS
->
HRCCR
&
SYS_HRCCR_DBL_Msk
)
//HRC = 40MHz
{
SystemCoreClock
=
__HSI
*
2
;
}
else
//HRC = 20MHz
{
SystemCoreClock
=
__HSI
;
}
}
}
else
//SYS_CLK <= LFCK
{
if
(
SYS
->
CLKSEL
&
SYS_CLKSEL_LFCK_Msk
)
//LFCK <= PLL
{
if
(
SYS
->
PLLCR
&
SYS_PLLCR_INSEL_Msk
)
//PLL_SRC <= HRC
{
SystemCoreClock
=
__HSI
;
}
else
//PLL_SRC <= XTAL
{
SystemCoreClock
=
__HSE
;
}
SystemCoreClock
=
SystemCoreClock
/
PLL_IN_DIV
*
PLL_FB_DIV
*
4
/
(
2
<<
(
2
-
PLL_OUT_DIV
));
#define PLL_OUT_DIV8 0
}
#define PLL_OUT_DIV4 1
else
//LFCK <= LRC
#define PLL_OUT_DIV2 2
{
SystemCoreClock
=
__LSI
;
}
}
if
(
SYS
->
CLKDIV
&
SYS_CLKDIV_SYS_Msk
)
#define PLL_OUT_DIV PLL_OUT_DIV8
SystemCoreClock
/=
2
;
CyclesPerUs
=
SystemCoreClock
/
1000000
;
}
/******************************************************************************************************************************************
* 函数名称:
* 功能说明: The necessary initializaiton of systerm
* 输 入:
* 输 出:
* 注意事项:
******************************************************************************************************************************************/
void
SystemInit
(
void
)
{
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_ANAC_Pos
);
switch
(
SYS_CLK
)
{
case
SYS_CLK_20MHz
:
//0 内部高频20MHz RC振荡器
switchCLK_20MHz
();
break
;
case
SYS_CLK_40MHz
:
//1 内部高频40MHz RC振荡器
uint32_t
SystemCoreClock
=
__HSI
;
//System Clock Frequency (Core Clock)
switchCLK_40MHz
();
uint32_t
CyclesPerUs
=
(
__HSI
/
1000000
);
//Cycles per micro second
break
;
case
SYS_CLK_32KHz
:
//2 内部低频32KHz RC振荡器
switchCLK_32KHz
();
break
;
case
SYS_CLK_XTAL
:
//3 外部晶体振荡器(2-30MHz)
/******************************************************************************************************************************************
switchCLK_XTAL
();
* 函数名称:
break
;
* 功能说明: This function is used to update the variable SystemCoreClock and must be called whenever the core clock is changed
* 输 入:
case
SYS_CLK_PLL
:
//4 片内锁相环输出
* 输 出:
switchCLK_PLL
();
* 注意事项:
break
;
******************************************************************************************************************************************/
}
void
SystemCoreClockUpdate
(
void
)
{
SYS
->
CLKDIV
&=
~
SYS_CLKDIV_SYS_Msk
;
if
(
SYS
->
CLKSEL
&
SYS_CLKSEL_SYS_Msk
)
//SYS_CLK <= HFCK
SYS
->
CLKDIV
|=
(
SYS_CLK_DIV
<<
SYS_CLKDIV_SYS_Pos
);
{
if
(
SYS
->
CLKSEL
&
SYS_CLKSEL_HFCK_Msk
)
//HFCK <= XTAL
{
SystemCoreClock
=
__HSE
;
}
else
//HFCK <= HRC
{
if
(
SYS
->
HRCCR
&
SYS_HRCCR_DBL_Msk
)
//HRC = 40MHz
{
SystemCoreClock
=
__HSI
*
2
;
}
else
//HRC = 20MHz
{
SystemCoreClock
=
__HSI
;
}
}
}
else
//SYS_CLK <= LFCK
{
if
(
SYS
->
CLKSEL
&
SYS_CLKSEL_LFCK_Msk
)
//LFCK <= PLL
{
if
(
SYS
->
PLLCR
&
SYS_PLLCR_INSEL_Msk
)
//PLL_SRC <= HRC
{
SystemCoreClock
=
__HSI
;
}
else
//PLL_SRC <= XTAL
{
SystemCoreClock
=
__HSE
;
}
SystemCoreClock
=
SystemCoreClock
/
PLL_IN_DIV
*
PLL_FB_DIV
*
4
/
(
2
<<
(
2
-
PLL_OUT_DIV
));
}
else
//LFCK <= LRC
{
SystemCoreClock
=
__LSI
;
}
}
if
(
SYS
->
CLKDIV
&
SYS_CLKDIV_SYS_Msk
)
SystemCoreClock
/=
2
;
CyclesPerUs
=
SystemCoreClock
/
1000000
;
}
SystemCoreClockUpdate
();
/******************************************************************************************************************************************
* 函数名称:
* 功能说明: The necessary initializaiton of systerm
* 输 入:
* 输 出:
* 注意事项:
******************************************************************************************************************************************/
void
SystemInit
(
void
)
{
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_ANAC_Pos
);
Flash_Param_at_xMHz
(
120
);
switch
(
SYS_CLK
)
{
case
SYS_CLK_20MHz
:
//0 内部高频20MHz RC振荡器
switchCLK_20MHz
();
break
;
case
SYS_CLK_40MHz
:
//1 内部高频40MHz RC振荡器
switchCLK_40MHz
();
break
;
case
SYS_CLK_32KHz
:
//2 内部低频32KHz RC振荡器
switchCLK_32KHz
();
break
;
case
SYS_CLK_XTAL
:
//3 外部晶体振荡器(2-30MHz)
switchCLK_XTAL
();
break
;
case
SYS_CLK_PLL
:
//4 片内锁相环输出
switchCLK_PLL
();
break
;
}
SYS
->
CLKDIV
&=
~
SYS_CLKDIV_SYS_Msk
;
SYS
->
CLKDIV
|=
(
SYS_CLK_DIV
<<
SYS_CLKDIV_SYS_Pos
);
SystemCoreClockUpdate
();
if
(
SystemCoreClock
>
80000000
)
{
Flash_Param_at_xMHz
(
120
);
}
else
if
(
SystemCoreClock
>
40000000
)
{
Flash_Param_at_xMHz
(
80
);
}
else
if
(
SystemCoreClock
>
30000000
)
{
Flash_Param_at_xMHz
(
40
);
}
else
{
Flash_Param_at_xMHz
(
30
);
}
}
}
void
switchCLK_20MHz
(
void
)
void
switchCLK_20MHz
(
void
)
{
{
uint32_t
i
;
uint32_t
i
;
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
(
0
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 20MHz
(
0
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 20MHz
for
(
i
=
0
;
i
<
1000
;
i
++
)
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
__NOP
();
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_HFCK_Msk
;
//HFCK <= HRC
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_HFCK_Msk
;
//HFCK <= HRC
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
}
}
void
switchCLK_40MHz
(
void
)
void
switchCLK_40MHz
(
void
)
{
{
uint32_t
i
;
uint32_t
i
;
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
(
1
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 40MHz
(
1
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 40MHz
for
(
i
=
0
;
i
<
1000
;
i
++
)
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
__NOP
();
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_HFCK_Msk
;
//HFCK <= HRC
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_HFCK_Msk
;
//HFCK <= HRC
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
}
}
void
switchCLK_32KHz
(
void
)
void
switchCLK_32KHz
(
void
)
{
{
uint32_t
i
;
uint32_t
i
;
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_RTCBKP_Pos
);
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_RTCBKP_Pos
);
SYS
->
LRCCR
&=
~
(
1
<<
SYS_LRCCR_OFF_Pos
);
SYS
->
LRCCR
&=
~
(
1
<<
SYS_LRCCR_OFF_Pos
);
for
(
i
=
0
;
i
<
100
;
i
++
)
for
(
i
=
0
;
i
<
100
;
i
++
)
__NOP
();
__NOP
();
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_LFCK_Msk
;
//LFCK <= LRC
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_LFCK_Msk
;
//LFCK <= LRC
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_SYS_Msk
;
//SYS_CLK <= LFCK
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_SYS_Msk
;
//SYS_CLK <= LFCK
}
}
void
switchCLK_XTAL
(
void
)
void
switchCLK_XTAL
(
void
)
{
{
uint32_t
i
;
uint32_t
i
;
SYS
->
XTALCR
=
(
1
<<
SYS_XTALCR_EN_Pos
);
SYS
->
XTALCR
=
(
1
<<
SYS_XTALCR_EN_Pos
);
for
(
i
=
0
;
i
<
1000
;
i
++
)
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
__NOP
();
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_HFCK_Pos
);
//HFCK <= XTAL
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_HFCK_Pos
);
//HFCK <= XTAL
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
}
}
void
switchCLK_PLL
(
void
)
void
switchCLK_PLL
(
void
)
{
{
uint32_t
i
;
uint32_t
i
;
PLLInit
();
PLLInit
();
SYS
->
PLLCR
|=
(
1
<<
SYS_PLLCR_OUTEN_Pos
);
SYS
->
PLLCR
|=
(
1
<<
SYS_PLLCR_OUTEN_Pos
);
for
(
i
=
0
;
i
<
10000
;
i
++
)
for
(
i
=
0
;
i
<
10000
;
i
++
)
__NOP
();
__NOP
();
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_LFCK_Pos
);
//LFCK <= PLL
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_LFCK_Pos
);
//LFCK <= PLL
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_SYS_Msk
;
//SYS_CLK <= LFCK
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_SYS_Msk
;
//SYS_CLK <= LFCK
}
}
void
PLLInit
(
void
)
void
PLLInit
(
void
)
{
{
uint32_t
i
;
uint32_t
i
;
if
(
SYS_PLL_SRC
==
SYS_CLK_20MHz
)
if
(
SYS_PLL_SRC
==
SYS_CLK_20MHz
)
{
{
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
(
0
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 20MHz
(
0
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 20MHz
for
(
i
=
0
;
i
<
1000
;
i
++
)
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
__NOP
();
SYS
->
PLLCR
|=
(
1
<<
SYS_PLLCR_INSEL_Pos
);
//PLL_SRC <= HRC
SYS
->
PLLCR
|=
(
1
<<
SYS_PLLCR_INSEL_Pos
);
//PLL_SRC <= HRC
}
}
else
if
(
SYS_PLL_SRC
==
SYS_CLK_XTAL
)
else
if
(
SYS_PLL_SRC
==
SYS_CLK_XTAL
)
{
{
SYS
->
XTALCR
=
(
1
<<
SYS_XTALCR_EN_Pos
);
SYS
->
XTALCR
=
(
1
<<
SYS_XTALCR_EN_Pos
);
for
(
i
=
0
;
i
<
20000
;
i
++
);
for
(
i
=
0
;
i
<
20000
;
i
++
)
;
SYS
->
PLLCR
&=
~
(
1
<<
SYS_PLLCR_INSEL_Pos
);
//PLL_SRC <= XTAL
}
SYS
->
PLLCR
&=
~
(
1
<<
SYS_PLLCR_INSEL_Pos
);
//PLL_SRC <= XTAL
}
SYS
->
PLLDIV
&=
~
(
SYS_PLLDIV_INDIV_Msk
|
SYS_PLLDIV_FBDIV_Msk
|
SYS
->
PLLDIV
&=
~
(
SYS_PLLDIV_INDIV_Msk
|
SYS_PLLDIV_OUTDIV_Msk
);
SYS_PLLDIV_FBDIV_Msk
|
SYS
->
PLLDIV
|=
(
PLL_IN_DIV
<<
SYS_PLLDIV_INDIV_Pos
)
|
SYS_PLLDIV_OUTDIV_Msk
);
(
PLL_FB_DIV
<<
SYS_PLLDIV_FBDIV_Pos
)
|
SYS
->
PLLDIV
|=
(
PLL_IN_DIV
<<
SYS_PLLDIV_INDIV_Pos
)
|
(
PLL_OUT_DIV
<<
SYS_PLLDIV_OUTDIV_Pos
);
(
PLL_FB_DIV
<<
SYS_PLLDIV_FBDIV_Pos
)
|
(
PLL_OUT_DIV
<<
SYS_PLLDIV_OUTDIV_Pos
);
SYS
->
PLLCR
&=
~
(
1
<<
SYS_PLLCR_OFF_Pos
);
SYS
->
PLLCR
&=
~
(
1
<<
SYS_PLLCR_OFF_Pos
);
while
(
SYS
->
PLLLOCK
==
0
);
//等待PLL锁定
while
(
SYS
->
PLLLOCK
==
0
)
;
//等待PLL锁定
}
}
bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.h
浏览文件 @
22513fe8
...
@@ -2,24 +2,28 @@
...
@@ -2,24 +2,28 @@
#define __SYSTEM_SWM320_H__
#define __SYSTEM_SWM320_H__
#ifdef __cplusplus
#ifdef __cplusplus
extern
"C"
extern
"C"
{
{
#endif
#endif
extern
uint32_t
SystemCoreClock
;
// System Clock Frequency (Core Clock)
extern
uint32_t
CyclesPerUs
;
// Cycles per micro second
extern
void
SystemInit
(
void
);
extern
uint32_t
SystemCoreClock
;
// System Clock Frequency (Core Clock)
extern
uint32_t
CyclesPerUs
;
// Cycles per micro second
extern
void
SystemCoreClockUpdate
(
void
);
extern
void
switchCLK_20MHz
(
void
);
extern
void
SystemInit
(
void
);
extern
void
switchCLK_40MHz
(
void
);
extern
void
switchCLK_32KHz
(
void
);
extern
void
SystemCoreClockUpdate
(
void
);
extern
void
switchCLK_XTAL
(
void
);
extern
void
switchCLK_PLL
(
void
);
extern
void
switchCLK_20MHz
(
void
);
extern
void
switchCLK_40MHz
(
void
);
extern
void
switchCLK_32KHz
(
void
);
extern
void
switchCLK_XTAL
(
void
);
extern
void
switchCLK_PLL
(
void
);
extern
void
PLLInit
(
void
);
extern
void
PLLInit
(
void
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.c
浏览文件 @
22513fe8
此差异已折叠。
点击以展开。
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.h
浏览文件 @
22513fe8
...
@@ -2,18 +2,18 @@
...
@@ -2,18 +2,18 @@
#define __SWM320_ADC_H__
#define __SWM320_ADC_H__
typedef
struct
{
typedef
struct
{
uint8_t
clk_src
;
//ADC
转换时钟源:ADC_CLKSRC_HRC、ADC_CLKSRC_VCO_DIV16、ADC_CLKSRC_VCO_DIV32、A
DC_CLKSRC_VCO_DIV32
uint8_t
clk_src
;
//ADC
转换时钟源:ADC_CLKSRC_HRC、ADC_CLKSRC_VCO_DIV16、ADC_CLKSRC_VCO_DIV32、ADC_
CLKSRC_VCO_DIV32
uint8_t
clk_div
;
//ADC
转换时钟分频,取值1
--31
uint8_t
clk_div
;
//ADC
转换时钟分频,取值1--3
1
uint8_t
pga_ref
;
//PGA
基准:PGA_REF_INTERNAL、P
GA_REF_EXTERNAL
uint8_t
pga_ref
;
//PGA
基准:PGA_REF_INTERNAL、PG
A_REF_EXTERNAL
uint8_t
channels
;
//ADC
转换通道选中,ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
channels
;
//ADC
转换通道选中,ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
samplAvg
;
//
采样取平均,触发启动ADC转换后,ADC在一个通道上连续采样、转换多次,并将它们的平均值作为该通道转换结果
uint8_t
samplAvg
;
//
采样取平均,触发启动ADC转换后,ADC在一个通道上连续采样、转换多次,并将它们的平均值作为该通道转换结果
uint8_t
trig_src
;
//ADC
触发方式:ADC_TRIGSRC_SW、ADC_TRIGSRC_PWM、ADC_TRIGSRC_TIMR2、A
DC_TRIGSRC_TIMR3
uint8_t
trig_src
;
//ADC
触发方式:ADC_TRIGSRC_SW、ADC_TRIGSRC_PWM、ADC_TRIGSRC_TIMR2、ADC
_TRIGSRC_TIMR3
uint8_t
Continue
;
//
在软件触发模式下:1 连续转换模式,启动后一直采样、转换,直到软件清除START位
uint8_t
Continue
;
//
在软件触发模式下:1 连续转换模式,启动后一直采样、转换,直到软件清除START位
// 0
单次转换模式,转换完成后START位自动清除停止转换
// 0
单次转换模式,转换完成后START位自动清除停止转换
uint8_t
EOC_IEn
;
//EOC
中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
EOC_IEn
;
//EOC
中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
OVF_IEn
;
//OVF
中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
OVF_IEn
;
//OVF
中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
HFULL_IEn
;
//FIFO
半满中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
HFULL_IEn
;
//FIFO
半满中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
FULL_IEn
;
//FIFO
满中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
FULL_IEn
;
//FIFO
满中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
}
ADC_InitStructure
;
}
ADC_InitStructure
;
#define ADC_CH0 0x01
#define ADC_CH0 0x01
...
@@ -31,49 +31,49 @@ typedef struct {
...
@@ -31,49 +31,49 @@ typedef struct {
#define ADC_CLKSRC_VCO_DIV64 4
#define ADC_CLKSRC_VCO_DIV64 4
#define ADC_AVG_SAMPLE1 0
#define ADC_AVG_SAMPLE1 0
#define ADC_AVG_SAMPLE2 1 //
一次启动连续采样、转换2次,并计算两次结果的平均值作为转换结果
#define ADC_AVG_SAMPLE2 1 //
一次启动连续采样、转换2次,并计算两次结果的平均值作为转换结果
#define ADC_AVG_SAMPLE4 3
#define ADC_AVG_SAMPLE4 3
#define ADC_AVG_SAMPLE8 7
#define ADC_AVG_SAMPLE8 7
#define ADC_AVG_SAMPLE16 15
#define ADC_AVG_SAMPLE16 15
#define ADC_TRIGSRC_SW 0 //
软件触发,即ADC->START.GO写1启动转换
#define ADC_TRIGSRC_SW 0 //
软件触发,即ADC->START.GO写1启动转换
#define ADC_TRIGSRC_PWM 1
#define ADC_TRIGSRC_PWM 1
#define PGA_REF_INTERNAL 1 //PGA
输入共模电平由内部电路产生,ADC_REFP和ADC_REFN可悬空
#define PGA_REF_INTERNAL 1 //PGA
输入共模电平由内部电路产生,ADC_REFP和ADC_REFN可悬空
#define PGA_REF_EXTERNAL 0 //PGA
输入共模电平由外部引脚提供,(ADC_REFP + ADC_REFN) 电平值须与量程相同
#define PGA_REF_EXTERNAL 0 //PGA
输入共模电平由外部引脚提供,(ADC_REFP + ADC_REFN) 电平值须与量程相同
void
ADC_Init
(
ADC_TypeDef
*
ADCx
,
ADC_InitStructure
*
initStruct
);
//ADC
模数转换器初始化
void
ADC_Init
(
ADC_TypeDef
*
ADCx
,
ADC_InitStructure
*
initStruct
);
//ADC
模数转换器初始化
void
ADC_Open
(
ADC_TypeDef
*
ADCx
);
//ADC
开启,可以软件启动、或硬件触发ADC转换
void
ADC_Open
(
ADC_TypeDef
*
ADCx
);
//ADC
开启,可以软件启动、或硬件触发ADC转换
void
ADC_Close
(
ADC_TypeDef
*
ADCx
);
//ADC
关闭,无法软件启动、或硬件触发ADC转换
void
ADC_Close
(
ADC_TypeDef
*
ADCx
);
//ADC
关闭,无法软件启动、或硬件触发ADC转换
void
ADC_Start
(
ADC_TypeDef
*
ADCx
);
//
启动指定ADC,开始模数转换
void
ADC_Start
(
ADC_TypeDef
*
ADCx
);
//
启动指定ADC,开始模数转换
void
ADC_Stop
(
ADC_TypeDef
*
ADCx
);
//
关闭指定ADC,停止模数转换
void
ADC_Stop
(
ADC_TypeDef
*
ADCx
);
//
关闭指定ADC,停止模数转换
uint32_t
ADC_Read
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
从指定通道读取转换结果
uint32_t
ADC_Read
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
从指定通道读取转换结果
uint32_t
ADC_IsEOC
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
指定通道是否
End Of Conversion
uint32_t
ADC_IsEOC
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
指定通道是否End
Of Conversion
void
ADC_ChnSelect
(
ADC_TypeDef
*
ADCx
,
uint32_t
chns
);
void
ADC_ChnSelect
(
ADC_TypeDef
*
ADCx
,
uint32_t
chns
);
void
ADC_IntEOCEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断使能
void
ADC_IntEOCEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断使能
void
ADC_IntEOCDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断禁止
void
ADC_IntEOCDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断禁止
void
ADC_IntEOCClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断标志清除
void
ADC_IntEOCClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断标志清除
uint32_t
ADC_IntEOCStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断状态
uint32_t
ADC_IntEOCStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断状态
void
ADC_IntOVFEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断使能
void
ADC_IntOVFEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断使能
void
ADC_IntOVFDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断禁止
void
ADC_IntOVFDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断禁止
void
ADC_IntOVFClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断标志清除
void
ADC_IntOVFClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断标志清除
uint32_t
ADC_IntOVFStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断状态
uint32_t
ADC_IntOVFStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断状态
void
ADC_IntHFULLEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
半满中断使能
void
ADC_IntHFULLEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
半满中断使能
void
ADC_IntHFULLDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
半满中断禁止
void
ADC_IntHFULLDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
半满中断禁止
void
ADC_IntHFULLClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
半满中断标志清除
void
ADC_IntHFULLClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
半满中断标志清除
uint32_t
ADC_IntHFULLStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
半满中断状态
uint32_t
ADC_IntHFULLStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
半满中断状态
void
ADC_IntFULLEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
满中断使能
void
ADC_IntFULLEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
满中断使能
void
ADC_IntFULLDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
满中断禁止
void
ADC_IntFULLDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
满中断禁止
void
ADC_IntFULLClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
满中断标志清除
void
ADC_IntFULLClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
满中断标志清除
uint32_t
ADC_IntFULLStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
满中断状态
uint32_t
ADC_IntFULLStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
满中断状态
#endif //__SWM320_ADC_H__
#endif //__SWM320_ADC_H__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_can.c
浏览文件 @
22513fe8
...
@@ -411,18 +411,6 @@ void CAN_INTRXNotEmptyDis(CAN_TypeDef * CANx)
...
@@ -411,18 +411,6 @@ void CAN_INTRXNotEmptyDis(CAN_TypeDef * CANx)
CANx
->
IE
&=
~
(
1
<<
CAN_IE_RXDA_Pos
);
CANx
->
IE
&=
~
(
1
<<
CAN_IE_RXDA_Pos
);
}
}
/******************************************************************************************************************************************
* 函数名称: CAN_INTRXNotEmptyStat()
* 功能说明: RX FIFO非空中断是否触发
* 输 入: CAN_TypeDef * CANx 指定要被设置的CAN接口,有效值包括CAN
* 输 出: uint32_t 1 已触发 0 未触发
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t
CAN_INTRXNotEmptyStat
(
CAN_TypeDef
*
CANx
)
{
return
(
CANx
->
IF
&
CAN_IF_RXDA_Msk
)
?
1
:
0
;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CAN_INTTXBufEmptyEn()
* 函数名称: CAN_INTTXBufEmptyEn()
* 功能说明: 当TX Buffer空时触发中断使能
* 功能说明: 当TX Buffer空时触发中断使能
...
@@ -447,18 +435,6 @@ void CAN_INTTXBufEmptyDis(CAN_TypeDef * CANx)
...
@@ -447,18 +435,6 @@ void CAN_INTTXBufEmptyDis(CAN_TypeDef * CANx)
CANx
->
IE
&=
~
(
1
<<
CAN_IE_TXBR_Pos
);
CANx
->
IE
&=
~
(
1
<<
CAN_IE_TXBR_Pos
);
}
}
/******************************************************************************************************************************************
* 函数名称: CAN_INTTXBufEmptyStat()
* 功能说明: TX Buffer空中断是否触发
* 输 入: CAN_TypeDef * CANx 指定要被设置的CAN接口,有效值包括CAN
* 输 出: uint32_t 1 已触发 0 未触发
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t
CAN_INTTXBufEmptyStat
(
CAN_TypeDef
*
CANx
)
{
return
(
CANx
->
IF
&
CAN_IF_TXBR_Msk
)
?
1
:
0
;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CAN_INTErrWarningEn()
* 函数名称: CAN_INTErrWarningEn()
* 功能说明: TXERR/RXERR计数值达到Error Warning Limit时触发中断使能
* 功能说明: TXERR/RXERR计数值达到Error Warning Limit时触发中断使能
...
@@ -483,18 +459,6 @@ void CAN_INTErrWarningDis(CAN_TypeDef * CANx)
...
@@ -483,18 +459,6 @@ void CAN_INTErrWarningDis(CAN_TypeDef * CANx)
CANx
->
IE
&=
~
(
1
<<
CAN_IE_ERRWARN_Pos
);
CANx
->
IE
&=
~
(
1
<<
CAN_IE_ERRWARN_Pos
);
}
}
/******************************************************************************************************************************************
* 函数名称: CAN_INTErrWarningStat()
* 功能说明: TXERR/RXERR计数值达到Error Warning Limit中断是否触发
* 输 入: CAN_TypeDef * CANx 指定要被设置的CAN接口,有效值包括CAN
* 输 出: uint32_t 1 已触发 0 未触发
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t
CAN_INTErrWarningStat
(
CAN_TypeDef
*
CANx
)
{
return
(
CANx
->
IF
&
CAN_IF_ERRWARN_Msk
)
?
1
:
0
;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CAN_INTRXOverflowEn()
* 函数名称: CAN_INTRXOverflowEn()
* 功能说明: RX FIFO 溢出时触发中断使能
* 功能说明: RX FIFO 溢出时触发中断使能
...
@@ -519,18 +483,6 @@ void CAN_INTRXOverflowDis(CAN_TypeDef * CANx)
...
@@ -519,18 +483,6 @@ void CAN_INTRXOverflowDis(CAN_TypeDef * CANx)
CANx
->
IE
&=
~
(
1
<<
CAN_IE_RXOV_Pos
);
CANx
->
IE
&=
~
(
1
<<
CAN_IE_RXOV_Pos
);
}
}
/******************************************************************************************************************************************
* 函数名称: CAN_INTRXOverflowStat()
* 功能说明: RX FIFO 溢出中断是否触发
* 输 入: CAN_TypeDef * CANx 指定要被设置的CAN接口,有效值包括CAN
* 输 出: uint32_t 1 已触发 0 未触发
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t
CAN_INTRXOverflowStat
(
CAN_TypeDef
*
CANx
)
{
return
(
CANx
->
IF
&
CAN_IF_RXOV_Msk
)
?
1
:
0
;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CAN_INTRXOverflowClear()
* 函数名称: CAN_INTRXOverflowClear()
* 功能说明: RX FIFO 溢出中断清除
* 功能说明: RX FIFO 溢出中断清除
...
@@ -567,18 +519,6 @@ void CAN_INTWakeupDis(CAN_TypeDef * CANx)
...
@@ -567,18 +519,6 @@ void CAN_INTWakeupDis(CAN_TypeDef * CANx)
CANx
->
IE
&=
~
(
1
<<
CAN_IE_WKUP_Pos
);
CANx
->
IE
&=
~
(
1
<<
CAN_IE_WKUP_Pos
);
}
}
/******************************************************************************************************************************************
* 函数名称: CAN_INTWakeupStat()
* 功能说明: 唤醒事件中断是否触发
* 输 入: CAN_TypeDef * CANx 指定要被设置的CAN接口,有效值包括CAN
* 输 出: uint32_t 1 已触发 0 未触发
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t
CAN_INTWakeupStat
(
CAN_TypeDef
*
CANx
)
{
return
(
CANx
->
IF
&
CAN_IF_WKUP_Msk
)
?
1
:
0
;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CAN_INTErrPassiveEn()
* 函数名称: CAN_INTErrPassiveEn()
* 功能说明: TXERR/RXERR计数值达到127时中断使能
* 功能说明: TXERR/RXERR计数值达到127时中断使能
...
@@ -603,18 +543,6 @@ void CAN_INTErrPassiveDis(CAN_TypeDef * CANx)
...
@@ -603,18 +543,6 @@ void CAN_INTErrPassiveDis(CAN_TypeDef * CANx)
CANx
->
IE
&=
~
(
1
<<
CAN_IE_ERRPASS_Pos
);
CANx
->
IE
&=
~
(
1
<<
CAN_IE_ERRPASS_Pos
);
}
}
/******************************************************************************************************************************************
* 函数名称: CAN_INTErrPassiveStat()
* 功能说明: TXERR/RXERR计数值达到127中断是否触发
* 输 入: CAN_TypeDef * CANx 指定要被设置的CAN接口,有效值包括CAN
* 输 出: uint32_t 1 已触发 0 未触发
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t
CAN_INTErrPassiveStat
(
CAN_TypeDef
*
CANx
)
{
return
(
CANx
->
IF
&
CAN_IF_ERRPASS_Msk
)
?
1
:
0
;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CAN_INTArbitrLostEn()
* 函数名称: CAN_INTArbitrLostEn()
* 功能说明: 仲裁失败中断使能
* 功能说明: 仲裁失败中断使能
...
@@ -639,18 +567,6 @@ void CAN_INTArbitrLostDis(CAN_TypeDef * CANx)
...
@@ -639,18 +567,6 @@ void CAN_INTArbitrLostDis(CAN_TypeDef * CANx)
CANx
->
IE
&=
~
(
1
<<
CAN_IE_ARBLOST_Pos
);
CANx
->
IE
&=
~
(
1
<<
CAN_IE_ARBLOST_Pos
);
}
}
/******************************************************************************************************************************************
* 函数名称: CAN_INTArbitrLostStat()
* 功能说明: 仲裁失败中断是否触发
* 输 入: CAN_TypeDef * CANx 指定要被设置的CAN接口,有效值包括CAN
* 输 出: uint32_t 1 已触发 0 未触发
* 注意事项: 无
******************************************************************************************************************************************/
uint32_t
CAN_INTArbitrLostStat
(
CAN_TypeDef
*
CANx
)
{
return
(
CANx
->
IF
&
CAN_IF_ARBLOST_Msk
)
?
1
:
0
;
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CAN_INTBusErrorEn()
* 函数名称: CAN_INTBusErrorEn()
* 功能说明: 总线错误中断使能
* 功能说明: 总线错误中断使能
...
@@ -676,13 +592,13 @@ void CAN_INTBusErrorDis(CAN_TypeDef * CANx)
...
@@ -676,13 +592,13 @@ void CAN_INTBusErrorDis(CAN_TypeDef * CANx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CAN_INT
BusError
Stat()
* 函数名称: CAN_INTStat()
* 功能说明:
总线错误中断是否触发
* 功能说明:
查询中断状态
* 输 入: CAN_TypeDef * CANx 指定要被设置的CAN接口,有效值包括CAN
* 输 入: CAN_TypeDef * CANx 指定要被设置的CAN接口,有效值包括CAN
* 输 出: uint32_t
1 已触发 0 未触发
* 输 出: uint32_t
当前中断状态
* 注意事项:
无
* 注意事项:
CANx->IF读取清零,因此在中断ISR中只能读取一次,不能多次读取
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
CAN_INT
BusError
Stat
(
CAN_TypeDef
*
CANx
)
uint32_t
CAN_INTStat
(
CAN_TypeDef
*
CANx
)
{
{
return
(
CANx
->
IF
&
CAN_IF_BUSERR_Msk
)
?
1
:
0
;
return
CANx
->
IF
;
}
}
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_can.h
浏览文件 @
22513fe8
...
@@ -5,14 +5,14 @@
...
@@ -5,14 +5,14 @@
#define CAN_FRAME_EXT 1
#define CAN_FRAME_EXT 1
typedef
struct
{
typedef
struct
{
uint8_t
Mode
;
//CAN_MODE_NORMAL
、CAN_MODE_LISTEN、C
AN_MODE_SELFTEST
uint8_t
Mode
;
//CAN_MODE_NORMAL
、CAN_MODE_LISTEN、C
AN_MODE_SELFTEST
uint8_t
CAN_BS1
;
//CAN_BS1_1tq
、CAN_BS1_2tq、... ... 、C
AN_BS1_16tq
uint8_t
CAN_BS1
;
//CAN_BS1_1tq
、CAN_BS1_2tq、... ... 、C
AN_BS1_16tq
uint8_t
CAN_BS2
;
//CAN_BS2_1tq
、CAN_BS2_2tq、... ... 、C
AN_BS2_8tq
uint8_t
CAN_BS2
;
//CAN_BS2_1tq
、CAN_BS2_2tq、... ... 、C
AN_BS2_8tq
uint8_t
CAN_SJW
;
//CAN_SJW_1tq
、CAN_SJW_2tq、CAN_SJW_3tq、C
AN_SJW_4tq
uint8_t
CAN_SJW
;
//CAN_SJW_1tq
、CAN_SJW_2tq、CAN_SJW_3tq、C
AN_SJW_4tq
uint32_t
Baudrate
;
//
波特率,即位传输速率,取值1
--1000000
uint32_t
Baudrate
;
//
波特率,即位传输速率,取值1--100
0000
uint8_t
FilterMode
;
//CAN_FILTER_16b
、C
AN_FILTER_32b
uint8_t
FilterMode
;
//CAN_FILTER_16b
、C
AN_FILTER_32b
union
{
union
{
uint32_t
FilterMask32b
;
//FilterCheck & (~FilterMask) == ID & (~FilterMask)
的Message通过过滤
uint32_t
FilterMask32b
;
//FilterCheck & (~FilterMask) == ID & (~FilterMask)
的Message通过过滤
struct
{
// 0 must match 1 don't care
struct
{
// 0 must match 1 don't care
uint16_t
FilterMask16b1
;
uint16_t
FilterMask16b1
;
uint16_t
FilterMask16b2
;
uint16_t
FilterMask16b2
;
...
@@ -25,15 +25,15 @@ typedef struct {
...
@@ -25,15 +25,15 @@ typedef struct {
uint16_t
FilterCheck16b2
;
uint16_t
FilterCheck16b2
;
};
};
};
};
uint8_t
RXNotEmptyIEn
;
//
接收FIFO非空,有数据可读
uint8_t
RXNotEmptyIEn
;
//
接收FIFO非空,有数据可读
uint8_t
RXOverflowIEn
;
//
接收FIFO溢出,有数据丢失
uint8_t
RXOverflowIEn
;
//
接收FIFO溢出,有数据丢失
uint8_t
ArbitrLostIEn
;
//
控制器丢失仲裁变成接收方
uint8_t
ArbitrLostIEn
;
//
控制器丢失仲裁变成接收方
uint8_t
ErrPassiveIEn
;
//
接收/发送错误计数值达到1
27
uint8_t
ErrPassiveIEn
;
//
接收/发送错误计数值达到127
}
CAN_InitStructure
;
}
CAN_InitStructure
;
#define CAN_MODE_NORMAL 0 //
常规模式
#define CAN_MODE_NORMAL 0 //
常规模式
#define CAN_MODE_LISTEN 1 //
监听模式
#define CAN_MODE_LISTEN 1 //
监听模式
#define CAN_MODE_SELFTEST 2 //
自测模式
#define CAN_MODE_SELFTEST 2 //
自测模式
#define CAN_BS1_1tq 0
#define CAN_BS1_1tq 0
#define CAN_BS1_2tq 1
#define CAN_BS1_2tq 1
...
@@ -66,15 +66,15 @@ typedef struct {
...
@@ -66,15 +66,15 @@ typedef struct {
#define CAN_SJW_3tq 2
#define CAN_SJW_3tq 2
#define CAN_SJW_4tq 3
#define CAN_SJW_4tq 3
#define CAN_FILTER_16b 0 //
两个16位过滤器
#define CAN_FILTER_16b 0 //
两个16位过滤器
#define CAN_FILTER_32b 1 //
一个32位过滤器
#define CAN_FILTER_32b 1 //
一个32位过滤器
typedef
struct
{
typedef
struct
{
uint32_t
id
;
//
消息
ID
uint32_t
id
;
//
消息I
D
uint8_t
format
;
//
帧格式:CAN_FRAME_STD、C
AN_FRAME_EXT
uint8_t
format
;
//
帧格式:CAN_FRAME_STD、CAN
_FRAME_EXT
uint8_t
remote
;
//
消息是否为远程帧
uint8_t
remote
;
//
消息是否为远程帧
uint8_t
size
;
//
接收到的数据个数
uint8_t
size
;
//
接收到的数据个数
uint8_t
data
[
8
];
//
接收到的数据
uint8_t
data
[
8
];
//
接收到的数据
}
CAN_RXMessage
;
}
CAN_RXMessage
;
...
@@ -102,35 +102,29 @@ void CAN_SetFilter16b(CAN_TypeDef * CANx, uint16_t check1, uint16_t mask1, uint1
...
@@ -102,35 +102,29 @@ void CAN_SetFilter16b(CAN_TypeDef * CANx, uint16_t check1, uint16_t mask1, uint1
void
CAN_INTRXNotEmptyEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXNotEmptyEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXNotEmptyDis
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXNotEmptyDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTRXNotEmptyStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTTXBufEmptyEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTTXBufEmptyEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTTXBufEmptyDis
(
CAN_TypeDef
*
CANx
);
void
CAN_INTTXBufEmptyDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTTXBufEmptyStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrWarningEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrWarningEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrWarningDis
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrWarningDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTErrWarningStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXOverflowEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXOverflowEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXOverflowDis
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXOverflowDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTRXOverflowStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXOverflowClear
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXOverflowClear
(
CAN_TypeDef
*
CANx
);
void
CAN_INTWakeupEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTWakeupEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTWakeupDis
(
CAN_TypeDef
*
CANx
);
void
CAN_INTWakeupDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTWakeupStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrPassiveEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrPassiveEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrPassiveDis
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrPassiveDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTErrPassiveStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTArbitrLostEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTArbitrLostEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTArbitrLostDis
(
CAN_TypeDef
*
CANx
);
void
CAN_INTArbitrLostDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTArbitrLostStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTBusErrorEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTBusErrorEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTBusErrorDis
(
CAN_TypeDef
*
CANx
);
void
CAN_INTBusErrorDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTBusErrorStat
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTStat
(
CAN_TypeDef
*
CANx
);
#endif //__SWM320_CAN_H__
#endif //__SWM320_CAN_H__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_crc.h
浏览文件 @
22513fe8
...
@@ -2,22 +2,22 @@
...
@@ -2,22 +2,22 @@
#define __SWM320_CRC_H__
#define __SWM320_CRC_H__
#define CRC32_IN32 0 //CRC32
算法,输
入数据32位
#define CRC32_IN32 0 //CRC32
算法,输入数据32位
#define CRC32_IN16 2 //CRC32
算法,输
入数据16位
#define CRC32_IN16 2 //CRC32
算法,输入数据16位
#define CRC32_IN8 4 //CRC32
算法,输
入数据 8位
#define CRC32_IN8 4 //CRC32
算法,输入数据 8位
#define CRC16_IN16 3 //CRC16
算法,输
入数据16位
#define CRC16_IN16 3 //CRC16
算法,输入数据16位
#define CRC16_IN8 5 //CRC16
算法,输
入数据 8位
#define CRC16_IN8 5 //CRC16
算法,输入数据 8位
void
CRC_Init
(
CRC_TypeDef
*
CRCx
,
uint32_t
mode
,
uint32_t
out_not
,
uint32_t
out_rev
,
uint32_t
ini_val
);
void
CRC_Init
(
CRC_TypeDef
*
CRCx
,
uint32_t
mode
,
uint32_t
out_not
,
uint32_t
out_rev
,
uint32_t
ini_val
);
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CRC_Write()
*
函数名称
: CRC_Write()
*
功能说明: C
RC写入数据
*
功能说明: CRC写入数据
*
输 入: uint32_t data
要写入的数据
*
输 入: uint32_t data 要写入的数据
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
static
__INLINE
void
CRC_Write
(
uint32_t
data
)
static
__INLINE
void
CRC_Write
(
uint32_t
data
)
{
{
...
@@ -25,11 +25,11 @@ static __INLINE void CRC_Write(uint32_t data)
...
@@ -25,11 +25,11 @@ static __INLINE void CRC_Write(uint32_t data)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: CRC_Result()
*
函数名称
: CRC_Result()
*
功能说明: 获
取CRC计算结果
*
功能说明: 获取CRC计算结果
*
输 入
: 无
*
输 入: 无
*
输 出: uint32_t CR
C 计算结果
*
输 出: uint32_t CRC 计算结果
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
static
__INLINE
uint32_t
CRC_Result
(
void
)
static
__INLINE
uint32_t
CRC_Result
(
void
)
{
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_dma.h
浏览文件 @
22513fe8
...
@@ -7,14 +7,14 @@
...
@@ -7,14 +7,14 @@
#define DMA_CH2 2
#define DMA_CH2 2
void
DMA_CHM_Config
(
uint32_t
chn
,
uint32_t
src_addr
,
uint32_t
src_addr_incr
,
uint32_t
dst_addr
,
uint32_t
dst_addr_incr
,
uint32_t
num_word
,
uint32_t
int_en
);
//DMA
通道配置,用于存储器间(如Flash和RAM间)搬运数据
void
DMA_CHM_Config
(
uint32_t
chn
,
uint32_t
src_addr
,
uint32_t
src_addr_incr
,
uint32_t
dst_addr
,
uint32_t
dst_addr_incr
,
uint32_t
num_word
,
uint32_t
int_en
);
//DMA
通道配置,用于存储器间(如Flash和RAM间)搬运数据
void
DMA_CH_Open
(
uint32_t
chn
);
//DMA
通道打开
void
DMA_CH_Open
(
uint32_t
chn
);
//DMA
通道打开
void
DMA_CH_Close
(
uint32_t
chn
);
//DMA
通道关闭
void
DMA_CH_Close
(
uint32_t
chn
);
//DMA
通道关闭
void
DMA_CH_INTEn
(
uint32_t
chn
);
//DMA
中断使能,数据搬运完成后触发中断
void
DMA_CH_INTEn
(
uint32_t
chn
);
//DMA
中断使能,数据搬运完成后触发中断
void
DMA_CH_INTDis
(
uint32_t
chn
);
//DMA
中断禁止,数据搬运完成后不触发中断
void
DMA_CH_INTDis
(
uint32_t
chn
);
//DMA
中断禁止,数据搬运完成后不触发中断
void
DMA_CH_INTClr
(
uint32_t
chn
);
//DMA
中断标志清除
void
DMA_CH_INTClr
(
uint32_t
chn
);
//DMA
中断标志清除
uint32_t
DMA_CH_INTStat
(
uint32_t
chn
);
//DMA
中断状态查询,1 数据搬运完成 0 数据搬运未完成
uint32_t
DMA_CH_INTStat
(
uint32_t
chn
);
//DMA
中断状态查询,1 数据搬运完成 0 数据搬运未完成
#endif //__SWM320_DMA_H__
#endif //__SWM320_DMA_H__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_exti.h
浏览文件 @
22513fe8
#ifndef __SWM320_EXTI_H__
#ifndef __SWM320_EXTI_H__
#define __SWM320_EXTI_H__
#define __SWM320_EXTI_H__
void
EXTI_Init
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
mode
);
//
指定引脚外部中断初始化
void
EXTI_Init
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
mode
);
//
指定引脚外部中断初始化
void
EXTI_Open
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚外部中断打开(即使能)
void
EXTI_Open
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚外部中断打开(即使能)
void
EXTI_Close
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚外部中断关闭(即禁能)
void
EXTI_Close
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚外部中断关闭(即禁能)
uint32_t
EXTI_State
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚是否触发了中断
uint32_t
EXTI_State
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚是否触发了中断
uint32_t
EXTI_RawState
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
uint32_t
EXTI_RawState
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
void
EXTI_Clear
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚外部中断清除(即清除中断标志,以免再次进入此中断)
void
EXTI_Clear
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚外部中断清除(即清除中断标志,以免再次进入此中断)
#define EXTI_FALL_EDGE 0x00 //
下降沿触发中断
#define EXTI_FALL_EDGE 0x00 //
下降沿触发中断
#define EXTI_RISE_EDGE 0x01 //
上升沿触发中断
#define EXTI_RISE_EDGE 0x01 //
上升沿触发中断
#define EXTI_BOTH_EDGE 0x02 //
双边沿触发中断
#define EXTI_BOTH_EDGE 0x02 //
双边沿触发中断
#define EXTI_LOW_LEVEL 0x10 //
低电平触发中断
#define EXTI_LOW_LEVEL 0x10 //
低电平触发中断
#define EXTI_HIGH_LEVEL 0x11 //
高电平触发中断
#define EXTI_HIGH_LEVEL 0x11 //
高电平触发中断
#endif //__SWM320_EXTI_H__
#endif //__SWM320_EXTI_H__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
文
件名称: SWM320_flash.c
*
文件名称
: SWM320_flash.c
*
功能说明: 使用芯片的IAP功能将片上Flash模拟
成EEPROM来保存数据,掉电后不丢失
*
功能说明: 使用芯片的IAP功能将片上Flash模拟成EEPROM来保存数据,掉电后不丢失
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
注意事项
:
*
版本日期: V1.1.0 2017年
10月25日
*
版本日期: V1.1.0 2017年10月25日
*
升
级记录:
*
升级记录
:
*******************************************************************************************************************************************
*******************************************************************************************************************************************
* @attention
* @attention
*
*
...
@@ -27,11 +27,11 @@ IAP_Flash_Write_t IAP_Flash_Write = (IAP_Flash_Write_t)0x11000801;
...
@@ -27,11 +27,11 @@ IAP_Flash_Write_t IAP_Flash_Write = (IAP_Flash_Write_t)0x11000801;
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: FLASH_Erase()
*
函数名称
: FLASH_Erase()
*
功能说明: 片内F
lash擦除
*
功能说明: 片内Flash擦除
*
输 入: uint32_t addr 擦
除地址,扇区大小为4K Byte
*
输 入: uint32_t addr 擦除地址,扇区大小为
4K Byte
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
FLASH_Erase
(
uint32_t
addr
)
void
FLASH_Erase
(
uint32_t
addr
)
{
{
...
@@ -45,13 +45,13 @@ void FLASH_Erase(uint32_t addr)
...
@@ -45,13 +45,13 @@ void FLASH_Erase(uint32_t addr)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: FLASH_Write()
*
函数名称
: FLASH_Write()
*
功能说明: 片内Fl
ash写入
*
功能说明: 片内Flash写入
*
输 入: uint32_t addr
写入地址
*
输 入: uint32_t addr 写入地址
* uint32_t buff[]
要写
入的数据
* uint32_t buff[]
要写入的数据
* uint32_t count
要写入数据的个数,以
字为单位,且必须是4的整数倍,即最少写入4个字
* uint32_t count
要写入数据的个数,以字为单位,且必须是4的整数倍,即最少写入4个字
*
输 出
: 无
*
输 出: 无
*
注意事项: 写入
数据个数必须是4的整数倍,即最少写入4个字
*
注意事项: 写入数据个数必须是4的整数倍,即最少写入4个字
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
FLASH_Write
(
uint32_t
addr
,
uint32_t
buff
[],
uint32_t
count
)
void
FLASH_Write
(
uint32_t
addr
,
uint32_t
buff
[],
uint32_t
count
)
{
{
...
@@ -65,17 +65,33 @@ void FLASH_Write(uint32_t addr, uint32_t buff[], uint32_t count)
...
@@ -65,17 +65,33 @@ void FLASH_Write(uint32_t addr, uint32_t buff[], uint32_t count)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称: Flash_Param_at
_120MHz()
*
函数名称: Flash_Param_at_x
MHz()
*
功能说明: 将Flash参数设置成1
20MHz主频下运行时所需的参数
*
功能说明: 将Flash参数设置成xMHz主频下运行时所需的参数
*
输 入
: 无
*
输 入: uint32_t x 可取值
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
Flash_Param_at_
120MHz
(
void
)
void
Flash_Param_at_
xMHz
(
uint32_t
x
)
{
{
__disable_irq
();
__disable_irq
();
switch
(
x
)
{
case
30
:
IAP_Flash_Param
(
0x489
,
0xabf41f25
);
break
;
IAP_Flash_Param
(
0x48a
,
0xabfc7a6e
);
case
40
:
IAP_Flash_Param
(
0x489
,
0xabf42929
);
break
;
case
80
:
IAP_Flash_Param
(
0x489
,
0xabf8524d
);
break
;
case
120
:
default:
IAP_Flash_Param
(
0x48a
,
0xabfc7a6e
);
break
;
}
__enable_irq
();
__enable_irq
();
}
}
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.h
浏览文件 @
22513fe8
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
void
FLASH_Erase
(
uint32_t
addr
);
void
FLASH_Erase
(
uint32_t
addr
);
void
FLASH_Write
(
uint32_t
addr
,
uint32_t
buff
[],
uint32_t
count
);
void
FLASH_Write
(
uint32_t
addr
,
uint32_t
buff
[],
uint32_t
count
);
void
Flash_Param_at_
120MHz
(
void
);
void
Flash_Param_at_
xMHz
(
uint32_t
x
);
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_gpio.c
浏览文件 @
22513fe8
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
* uint32_t pull_up 上拉电阻,0 关闭上拉 1 开启上拉
* uint32_t pull_up 上拉电阻,0 关闭上拉 1 开启上拉
* uint32_t pull_down 下拉电阻,0 关闭下拉 1 开启下拉
* uint32_t pull_down 下拉电阻,0 关闭下拉 1 开启下拉
* 输 出: 无
* 输 出: 无
* 注意事项: GPIOA、GPIOC、GPIOM、GPIOP只有上拉,GPIOB、GPION只有下拉
* 注意事项: GPIOA、GPIOC、GPIOM、GPIOP只有上拉,GPIOB、GPION只有下拉
(PN0、PN1、PN2三个引脚有上拉没下拉)
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
GPIO_Init
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
dir
,
uint32_t
pull_up
,
uint32_t
pull_down
)
void
GPIO_Init
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
dir
,
uint32_t
pull_up
,
uint32_t
pull_down
)
{
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_gpio.h
浏览文件 @
22513fe8
...
@@ -2,16 +2,16 @@
...
@@ -2,16 +2,16 @@
#define __SWM320_GPIO_H__
#define __SWM320_GPIO_H__
void
GPIO_Init
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
dir
,
uint32_t
pull_up
,
uint32_t
pull_down
);
//
引脚初始化,包含引脚方向、上拉电阻、下拉电阻
void
GPIO_Init
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
dir
,
uint32_t
pull_up
,
uint32_t
pull_down
);
//
引脚初始化,包含引脚方向、上拉电阻、下拉电阻
void
GPIO_SetBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
将参数指定的引脚电平置高
void
GPIO_SetBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
将参数指定的引脚电平置高
void
GPIO_ClrBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
将参数指定的引脚电平置低
void
GPIO_ClrBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
将参数指定的引脚电平置低
void
GPIO_InvBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
将参数指定的引脚电平反转
void
GPIO_InvBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
将参数指定的引脚电平反转
uint32_t
GPIO_GetBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
读取参数指定的引脚的电平状态
uint32_t
GPIO_GetBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
读取参数指定的引脚的电平状态
void
GPIO_SetBits
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
w
);
//
将参数指定的从n开始的w位连续引脚的电平置高
void
GPIO_SetBits
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
w
);
//
将参数指定的从n开始的w位连续引脚的电平置高
void
GPIO_ClrBits
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
w
);
//
将参数指定的从n开始的w位连续引脚的电平置低
void
GPIO_ClrBits
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
w
);
//
将参数指定的从n开始的w位连续引脚的电平置低
void
GPIO_InvBits
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
w
);
//
将参数指定的从n开始的w位连续引脚的电平反转
void
GPIO_InvBits
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
w
);
//
将参数指定的从n开始的w位连续引脚的电平反转
uint32_t
GPIO_GetBits
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
w
);
//
读取参数指定的从n开始的w位连续引脚的电平状态
uint32_t
GPIO_GetBits
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
w
);
//
读取参数指定的从n开始的w位连续引脚的电平状态
void
GPIO_AtomicSetBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
void
GPIO_AtomicSetBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
void
GPIO_AtomicClrBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
void
GPIO_AtomicClrBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_i2c.h
浏览文件 @
22513fe8
...
@@ -2,19 +2,19 @@
...
@@ -2,19 +2,19 @@
#define __SWM320_I2C_H__
#define __SWM320_I2C_H__
typedef
struct
{
typedef
struct
{
uint8_t
Master
;
//1
主机模式
uint8_t
Master
;
//1
主机模式
uint8_t
Addr7b
;
//1 7
位地址 0 10位地址
uint8_t
Addr7b
;
//1 7
位地址 0 10位地址
uint32_t
MstClk
;
//
主机传输时钟频率
uint32_t
MstClk
;
//
主机传输时钟频率
uint8_t
MstIEn
;
//
主机模式中断使能
uint8_t
MstIEn
;
//
主机模式中断使能
uint16_t
SlvAddr
;
//
从机地址
uint16_t
SlvAddr
;
//
从机地址
uint8_t
SlvRxEndIEn
;
//
从机接收完成中断使能
uint8_t
SlvRxEndIEn
;
//
从机接收完成中断使能
uint8_t
SlvTxEndIEn
;
//
从机发送完成中断使能
uint8_t
SlvTxEndIEn
;
//
从机发送完成中断使能
uint8_t
SlvSTADetIEn
;
//
从机检测到起始中断使能
uint8_t
SlvSTADetIEn
;
//
从机检测到起始中断使能
uint8_t
SlvSTODetIEn
;
//
从机检测到终止中断使能
uint8_t
SlvSTODetIEn
;
//
从机检测到终止中断使能
uint8_t
SlvRdReqIEn
;
//
从机接收到读请求中断使能
uint8_t
SlvRdReqIEn
;
//
从机接收到读请求中断使能
uint8_t
SlvWrReqIEn
;
//
从机接收到写请求中断使能
uint8_t
SlvWrReqIEn
;
//
从机接收到写请求中断使能
}
I2C_InitStructure
;
}
I2C_InitStructure
;
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
文
件名称: SWM320_lcd.c
*
文件名称
: SWM320_lcd.c
*
功能说明: SWM320单
片机的LCD功能驱动库
*
功能说明: SWM320单片机的LCD功能驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
注意事项
:
*
版本日期: V1.1.0 2017年
10月25日
*
版本日期: V1.1.0 2017年10月25日
*
升
级记录:
*
升级记录
:
*
*
*
*
*******************************************************************************************************************************************
*******************************************************************************************************************************************
...
@@ -24,12 +24,12 @@
...
@@ -24,12 +24,12 @@
#include <string.h>
#include <string.h>
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_Init()
*
函数名称
: LCD_Init()
*
功能说明: L
CD初始化
*
功能说明: LCD初始化
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
* LCD_InitStructure * initStruct
包含LCD相关
设定值的结构体
* LCD_InitStructure * initStruct
包含LCD相关设定值的结构体
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
LCD_Init
(
LCD_TypeDef
*
LCDx
,
LCD_InitStructure
*
initStruct
)
void
LCD_Init
(
LCD_TypeDef
*
LCDx
,
LCD_InitStructure
*
initStruct
)
{
{
...
@@ -39,30 +39,21 @@ void LCD_Init(LCD_TypeDef * LCDx, LCD_InitStructure * initStruct)
...
@@ -39,30 +39,21 @@ void LCD_Init(LCD_TypeDef * LCDx, LCD_InitStructure * initStruct)
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_LCD_Pos
);
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_LCD_Pos
);
break
;
break
;
}
}
if
(
initStruct
->
Interface
==
LCD_INTERFACE_RGB
)
LCDx
->
CR0
=
((
initStruct
->
HnPixel
-
1
)
<<
LCD_CR0_HPIX_Pos
)
|
{
((
initStruct
->
VnPixel
-
1
)
<<
LCD_CR0_VPIX_Pos
)
|
LCDx
->
START
=
(
0
<<
LCD_START_MPUEN_Pos
);
(
initStruct
->
ClkAlways
<<
LCD_CR0_DCLK_Pos
)
|
(
initStruct
->
HsyncWidth
<<
LCD_CR0_HLOW_Pos
);
LCDx
->
CR0
=
((
initStruct
->
HnPixel
-
1
)
<<
LCD_CR0_HPIX_Pos
)
|
((
initStruct
->
VnPixel
-
1
)
<<
LCD_CR0_VPIX_Pos
)
|
LCDx
->
CR1
=
((
initStruct
->
Hfp
-
1
)
<<
LCD_CR1_HFP_Pos
)
|
(
initStruct
->
ClkAlways
<<
LCD_CR0_DCLK_Pos
)
|
((
initStruct
->
Hbp
-
1
)
<<
LCD_CR1_HBP_Pos
)
|
(
initStruct
->
HsyncWidth
<<
LCD_CR0_HLOW_Pos
);
((
initStruct
->
Vfp
-
1
)
<<
LCD_CR1_VFP_Pos
)
|
((
initStruct
->
Vbp
-
1
)
<<
LCD_CR1_VBP_Pos
)
|
LCDx
->
CR1
=
((
initStruct
->
Hfp
-
1
)
<<
LCD_CR1_HFP_Pos
)
|
(
initStruct
->
ClkDiv
<<
LCD_CR1_DCLKDIV_Pos
)
|
((
initStruct
->
Hbp
-
1
)
<<
LCD_CR1_HBP_Pos
)
|
(
initStruct
->
SamplEdge
<<
LCD_CR1_DCLKINV_Pos
);
((
initStruct
->
Vfp
-
1
)
<<
LCD_CR1_VFP_Pos
)
|
((
initStruct
->
Vbp
-
1
)
<<
LCD_CR1_VBP_Pos
)
|
(
initStruct
->
ClkDiv
<<
LCD_CR1_DCLKDIV_Pos
)
|
(
initStruct
->
SamplEdge
<<
LCD_CR1_DCLKINV_Pos
);
}
else
if
(
initStruct
->
Interface
==
LCD_INTERFACE_I80
)
{
//
}
LCDx
->
IE
=
1
;
LCDx
->
IE
=
1
;
LCDx
->
IF
=
1
;
//
清
除标志
LCDx
->
IF
=
1
;
//
清除标志
if
(
initStruct
->
IntEOTEn
)
LCD_INTEn
(
LCDx
);
if
(
initStruct
->
IntEOTEn
)
LCD_INTEn
(
LCDx
);
else
LCD_INTDis
(
LCDx
);
else
LCD_INTDis
(
LCDx
);
...
@@ -82,11 +73,11 @@ void LCD_Init(LCD_TypeDef * LCDx, LCD_InitStructure * initStruct)
...
@@ -82,11 +73,11 @@ void LCD_Init(LCD_TypeDef * LCDx, LCD_InitStructure * initStruct)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_Start()
*
函数名称
: LCD_Start()
*
功能说明:
启动一次数据传输
*
功能说明: 启动一次数据传输
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
LCD_Start
(
LCD_TypeDef
*
LCDx
)
void
LCD_Start
(
LCD_TypeDef
*
LCDx
)
{
{
...
@@ -94,11 +85,11 @@ void LCD_Start(LCD_TypeDef * LCDx)
...
@@ -94,11 +85,11 @@ void LCD_Start(LCD_TypeDef * LCDx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_IsBusy()
*
函数名称
: LCD_IsBusy()
*
功能说明:
是否正在进行数据传输
*
功能说明: 是否正在进行数据传输
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出: uint32_t 1 正在传输数据
0 数据传输已完成
*
输 出: uint32_t 1 正在传输数据 0 数据传输已完成
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
LCD_IsBusy
(
LCD_TypeDef
*
LCDx
)
uint32_t
LCD_IsBusy
(
LCD_TypeDef
*
LCDx
)
{
{
...
@@ -106,11 +97,11 @@ uint32_t LCD_IsBusy(LCD_TypeDef * LCDx)
...
@@ -106,11 +97,11 @@ uint32_t LCD_IsBusy(LCD_TypeDef * LCDx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_INTEn()
*
函数名称
: LCD_INTEn()
*
功能说明: LCD中断使能,
完成指定长度的数据传输时触发中断
*
功能说明: LCD中断使能,完成指定长度的数据传输时触发中断
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
LCD_INTEn
(
LCD_TypeDef
*
LCDx
)
void
LCD_INTEn
(
LCD_TypeDef
*
LCDx
)
{
{
...
@@ -118,11 +109,11 @@ void LCD_INTEn(LCD_TypeDef * LCDx)
...
@@ -118,11 +109,11 @@ void LCD_INTEn(LCD_TypeDef * LCDx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_INTDis()
*
函数名称
: LCD_INTDis()
*
功能说明: LCD中断禁止,
完成指定长度的数据传输时不触发中断
*
功能说明: LCD中断禁止,完成指定长度的数据传输时不触发中断
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
LCD_INTDis
(
LCD_TypeDef
*
LCDx
)
void
LCD_INTDis
(
LCD_TypeDef
*
LCDx
)
{
{
...
@@ -130,11 +121,11 @@ void LCD_INTDis(LCD_TypeDef * LCDx)
...
@@ -130,11 +121,11 @@ void LCD_INTDis(LCD_TypeDef * LCDx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_INTClr()
*
函数名称
: LCD_INTClr()
*
功能说明: LCD
中断标志清除
*
功能说明: LCD中断标志清除
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
LCD_INTClr
(
LCD_TypeDef
*
LCDx
)
void
LCD_INTClr
(
LCD_TypeDef
*
LCDx
)
{
{
...
@@ -142,11 +133,11 @@ void LCD_INTClr(LCD_TypeDef * LCDx)
...
@@ -142,11 +133,11 @@ void LCD_INTClr(LCD_TypeDef * LCDx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: LCD_INTStat()
*
函数名称
: LCD_INTStat()
*
功能说明: LCD中
断状态查询
*
功能说明: LCD中断状态查询
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出: uint32_t 1 完成指定长度的数据传输
0 未完成指定长度的数据传输
*
输 出: uint32_t 1 完成指定长度的数据传输 0 未完成指定长度的数据传输
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
LCD_INTStat
(
LCD_TypeDef
*
LCDx
)
uint32_t
LCD_INTStat
(
LCD_TypeDef
*
LCDx
)
{
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.h
浏览文件 @
22513fe8
...
@@ -2,10 +2,7 @@
...
@@ -2,10 +2,7 @@
#define __SWM320_LCD_H__
#define __SWM320_LCD_H__
typedef
struct
{
typedef
struct
{
uint8_t
Interface
;
//LCD屏接口:LCD_INTERFACE_RGB、LCD_INTERFACE_I80、LCD_INTERFACE_M68
/* RGB同步接口参数 */
uint16_t
HnPixel
;
//水平方向像素个数,最大取值1024
uint16_t
HnPixel
;
//水平方向像素个数,最大取值1024
uint16_t
VnPixel
;
//垂直方向像素个数,最大取值 768
uint16_t
VnPixel
;
//垂直方向像素个数,最大取值 768
uint8_t
Hfp
;
//horizonal front porch,最大取值32
uint8_t
Hfp
;
//horizonal front porch,最大取值32
...
@@ -21,10 +18,6 @@ typedef struct {
...
@@ -21,10 +18,6 @@ typedef struct {
}
LCD_InitStructure
;
}
LCD_InitStructure
;
#define LCD_INTERFACE_RGB 0
#define LCD_INTERFACE_I80 1
#define LCD_INTERFACE_M68 2
#define LCD_SAMPLEDGE_RISE 0 //屏幕在DOTCLK的上升沿采样数据
#define LCD_SAMPLEDGE_RISE 0 //屏幕在DOTCLK的上升沿采样数据
#define LCD_SAMPLEDGE_FALL 1 //屏幕在DOTCLK的下降沿采样数据
#define LCD_SAMPLEDGE_FALL 1 //屏幕在DOTCLK的下降沿采样数据
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_norflash.h
浏览文件 @
22513fe8
...
@@ -2,12 +2,12 @@
...
@@ -2,12 +2,12 @@
#define __SWM320_NORFLASH_H__
#define __SWM320_NORFLASH_H__
typedef
struct
{
typedef
struct
{
uint8_t
DataWidth
;
// 8
、1
6
uint8_t
DataWidth
;
// 8
、
16
uint8_t
WELowPulseTime
;
// WE# pulse width
,单位为系统时钟周期,最大值为
7
uint8_t
WELowPulseTime
;
// WE# pulse width
,单位为系统时钟周期,最大值为7
uint8_t
OEPreValidTime
;
// Valid data output after OE# low
,单位为系统时钟周期,最大值为
15
uint8_t
OEPreValidTime
;
// Valid data output after OE# low
,单位为系统时钟周期,最大值为15
uint8_t
OperFinishIEn
;
//
操作(写入、擦除)完成中断使能
uint8_t
OperFinishIEn
;
//
操作(写入、擦除)完成中断使能
uint8_t
OperTimeoutIEn
;
uint8_t
OperTimeoutIEn
;
}
NORFL_InitStructure
;
}
NORFL_InitStructure
;
...
@@ -21,7 +21,7 @@ uint32_t NORFL_Read(uint32_t addr);
...
@@ -21,7 +21,7 @@ uint32_t NORFL_Read(uint32_t addr);
uint16_t
NORFL_ReadID
(
uint32_t
id_addr
);
uint16_t
NORFL_ReadID
(
uint32_t
id_addr
);
/*
当前版本总线读只支持字读
/*
当前版本总线读只支持字读
#define NORFL_Read8(addr) *((volatile uint8_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_Read16(addr) *((volatile uint16_t *)(NORFLM_BASE + addr)) */
#define NORFL_Read32(addr) *((volatile uint32_t *)(NORFLM_BASE + addr))
#define NORFL_Read32(addr) *((volatile uint32_t *)(NORFLM_BASE + addr))
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_port.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
文件名称
: SWM320_port.c
*
文件名称:
SWM320_port.c
*
功能说明: SWM320单片机的端口引脚功能选择库函数
*
功能说明: SWM320单片机的端口引脚功能选择库函数
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
技术支持:
http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
注意事项:
*
版本日期: V1.1.0 2017年10月25日
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
升级记录:
*
*
*
*
*******************************************************************************************************************************************
*******************************************************************************************************************************************
...
@@ -23,15 +23,15 @@
...
@@ -23,15 +23,15 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称
: PORT_Init()
*
函数名称:
PORT_Init()
*
功能说明: 端口引脚功能选择,可用的功能见"SWM320_port.h"文件
*
功能说明: 端口引脚功能选择,可用的功能见"SWM320_port.h"文件
*
输 入: uint32_t PORTx 指定PORT端口,有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、P
ORTP
*
输 入: uint32_t PORTx 指定PORT端口,有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、PORTP
* uint32_t n
指定PORT引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、P
IN23
* uint32_t n
指定PORT引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t func
指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
* uint32_t func
指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
* uint32_t digit_in_en
数字输入使能
* uint32_t digit_in_en
数字输入使能
*
输 出: 无
*
输 出: 无
*
注意事项: 当引脚标号n为偶数时,func取值只能是FUNMUX0开头的,如
FUNMUX0_UART0_RXD
*
注意事项: 当引脚标号n为偶数时,func取值只能是FUNMUX0开头的,如FUNMUX0_UA
RT0_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
)
void
PORT_Init
(
uint32_t
PORTx
,
uint32_t
n
,
uint32_t
func
,
uint32_t
digit_in_en
)
{
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_port.h
浏览文件 @
22513fe8
#ifndef __SWM320_PORT_H__
#ifndef __SWM320_PORT_H__
#define __SWM320_PORT_H__
#define __SWM320_PORT_H__
void
PORT_Init
(
uint32_t
PORTx
,
uint32_t
n
,
uint32_t
func
,
uint32_t
digit_in_en
);
//
端口引脚功能选择,其可取值如下:
void
PORT_Init
(
uint32_t
PORTx
,
uint32_t
n
,
uint32_t
func
,
uint32_t
digit_in_en
);
//
端口引脚功能选择,其可取值如下:
#define PORTA 0
#define PORTA 0
#define PORTB 1
#define PORTB 1
...
@@ -425,8 +425,8 @@ void PORT_Init(uint32_t PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en);
...
@@ -425,8 +425,8 @@ void PORT_Init(uint32_t PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en);
/*
下面宏定义的取值全部在正确值的基础上“加100”,以区分上面宏定义的值,从而方便库函数的编写
*/
/*
下面宏定义的取值全部在正确值的基础上“加100”,以区分上面宏定义的值,从而方便库函数的编写*/
/*
下面这些值是偶数编号引脚的功能取值,如PIN0、PIN2、
... */
/*
下面这些值是偶数编号引脚的功能取值,如PIN0、PIN2、... */
#define FUNMUX0_UART0_RXD 100
#define FUNMUX0_UART0_RXD 100
#define FUNMUX0_UART1_RXD 101
#define FUNMUX0_UART1_RXD 101
#define FUNMUX0_UART2_RXD 102
#define FUNMUX0_UART2_RXD 102
...
@@ -452,7 +452,7 @@ void PORT_Init(uint32_t PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en);
...
@@ -452,7 +452,7 @@ void PORT_Init(uint32_t PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en);
#define FUNMUX0_UART2_CTS 123
#define FUNMUX0_UART2_CTS 123
#define FUNMUX0_UART3_CTS 124
#define FUNMUX0_UART3_CTS 124
/*
下面这些值是奇数编号引脚的功能取值,如PIN1、PIN3、
... */
/*
下面这些值是奇数编号引脚的功能取值,如PIN1、PIN3、... */
#define FUNMUX1_UART0_TXD 100
#define FUNMUX1_UART0_TXD 100
#define FUNMUX1_UART1_TXD 101
#define FUNMUX1_UART1_TXD 101
#define FUNMUX1_UART2_TXD 102
#define FUNMUX1_UART2_TXD 102
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.c
浏览文件 @
22513fe8
此差异已折叠。
点击以展开。
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.h
浏览文件 @
22513fe8
...
@@ -2,57 +2,57 @@
...
@@ -2,57 +2,57 @@
#define __SWM320_PWM_H__
#define __SWM320_PWM_H__
typedef
struct
{
typedef
struct
{
uint8_t
clk_div
;
//PWM_CLKDIV_1
、P
WM_CLKDIV_8
uint8_t
clk_div
;
//PWM_CLKDIV_1
、P
WM_CLKDIV_8
uint8_t
mode
;
//PWM_MODE_INDEP
、PWM_MODE_COMPL、PWM_MODE_INDEP_CALIGN、P
WM_MODE_COMPL_CALIGN
uint8_t
mode
;
//PWM_MODE_INDEP
、PWM_MODE_COMPL、PWM_MODE_INDEP_CALIGN、P
WM_MODE_COMPL_CALIGN
uint16_t
cycleA
;
//A
路周期
uint16_t
cycleA
;
//A
路周期
uint16_t
hdutyA
;
//A
路占空比
uint16_t
hdutyA
;
//A
路占空比
uint16_t
deadzoneA
;
//A
路死区时长,取值0
--1023
uint16_t
deadzoneA
;
//A
路死区时长,取值0--
1023
uint8_t
initLevelA
;
//A
路初始输出电平,0 低电平 1 高电平
uint8_t
initLevelA
;
//A
路初始输出电平,0 低电平 1 高电平
uint16_t
cycleB
;
//B
路周期
uint16_t
cycleB
;
//B
路周期
uint16_t
hdutyB
;
//B
路占空比
uint16_t
hdutyB
;
//B
路占空比
uint16_t
deadzoneB
;
//B
路死区时长,取值0
--1023
uint16_t
deadzoneB
;
//B
路死区时长,取值0--
1023
uint8_t
initLevelB
;
//B
路初始输出电平,0 低电平 1 高电平
uint8_t
initLevelB
;
//B
路初始输出电平,0 低电平 1 高电平
uint8_t
HEndAIEn
;
//A
路高电平结束中断使能
uint8_t
HEndAIEn
;
//A
路高电平结束中断使能
uint8_t
NCycleAIEn
;
//A
路新周期开始中断使能
uint8_t
NCycleAIEn
;
//A
路新周期开始中断使能
uint8_t
HEndBIEn
;
//B
路高电平结束中断使能
uint8_t
HEndBIEn
;
//B
路高电平结束中断使能
uint8_t
NCycleBIEn
;
//B
路新周期开始中断使能
uint8_t
NCycleBIEn
;
//B
路新周期开始中断使能
}
PWM_InitStructure
;
}
PWM_InitStructure
;
#define PWM_CLKDIV_1 0
#define PWM_CLKDIV_1 0
#define PWM_CLKDIV_8 1
#define PWM_CLKDIV_8 1
#define PWM_MODE_INDEP 0 //A
路和B路为两路独立输出
#define PWM_MODE_INDEP 0 //A
路和B路为两路独立输出
#define PWM_MODE_COMPL 1 //A
路和B路为一路互补输出
#define PWM_MODE_COMPL 1 //A
路和B路为一路互补输出
#define PWM_MODE_INDEP_CALIGN 3 //A
路和B路为两路独立输出,中心对齐
#define PWM_MODE_INDEP_CALIGN 3 //A
路和B路为两路独立输出,中心对齐
#define PWM_MODE_COMPL_CALIGN 4 //A
路和B路为一路互补输出,中心对齐
#define PWM_MODE_COMPL_CALIGN 4 //A
路和B路为一路互补输出,中心对齐
#define PWM_CH_A 0
#define PWM_CH_A 0
#define PWM_CH_B 1
#define PWM_CH_B 1
void
PWM_Init
(
PWM_TypeDef
*
PWMx
,
PWM_InitStructure
*
initStruct
);
//PWM
初始化
void
PWM_Init
(
PWM_TypeDef
*
PWMx
,
PWM_InitStructure
*
initStruct
);
//PWM
初始化
void
PWM_Start
(
PWM_TypeDef
*
PWMx
,
uint32_t
chA
,
uint32_t
chB
);
//
启动PWM,开始PWM输出
void
PWM_Start
(
PWM_TypeDef
*
PWMx
,
uint32_t
chA
,
uint32_t
chB
);
//
启动PWM,开始PWM输出
void
PWM_Stop
(
PWM_TypeDef
*
PWMx
,
uint32_t
chA
,
uint32_t
chB
);
//
关闭PWM,停止PWM输出
void
PWM_Stop
(
PWM_TypeDef
*
PWMx
,
uint32_t
chA
,
uint32_t
chB
);
//
关闭PWM,停止PWM输出
void
PWM_SetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
cycle
);
//
设置周期
void
PWM_SetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
cycle
);
//
设置周期
uint16_t
PWM_GetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取周期
uint16_t
PWM_GetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取周期
void
PWM_SetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
hduty
);
//
设置高电平时长
void
PWM_SetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
hduty
);
//
设置高电平时长
uint16_t
PWM_GetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取高电平时长
uint16_t
PWM_GetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取高电平时长
void
PWM_SetDeadzone
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint8_t
deadzone
);
//
设置死区时长
void
PWM_SetDeadzone
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint8_t
deadzone
);
//
设置死区时长
uint8_t
PWM_GetDeadzone
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取死区时长
uint8_t
PWM_GetDeadzone
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取死区时长
void
PWM_IntNCycleEn
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
新周期开始中断使能
void
PWM_IntNCycleEn
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
新周期开始中断使能
void
PWM_IntNCycleDis
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
新周期开始中断禁能
void
PWM_IntNCycleDis
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
新周期开始中断禁能
void
PWM_IntNCycleClr
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
新周期开始中断标志清除
void
PWM_IntNCycleClr
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
新周期开始中断标志清除
uint32_t
PWM_IntNCycleStat
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
新周期开始中断是否发生
uint32_t
PWM_IntNCycleStat
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
新周期开始中断是否发生
void
PWM_IntHEndEn
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
高电平结束中断使能
void
PWM_IntHEndEn
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
高电平结束中断使能
void
PWM_IntHEndDis
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
高电平结束中断禁能
void
PWM_IntHEndDis
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
高电平结束中断禁能
void
PWM_IntHEndClr
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
高电平结束中断标志清除
void
PWM_IntHEndClr
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
高电平结束中断标志清除
uint32_t
PWM_IntHEndStat
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
高电平结束中断是否发生
uint32_t
PWM_IntHEndStat
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
高电平结束中断是否发生
#endif //__SWM320_PWM_H__
#endif //__SWM320_PWM_H__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
文
件名称: SWM320_rtc.c
*
文件名称
: SWM320_rtc.c
*
功能说明: SWM320单
片机的RTC驱动库
*
功能说明: SWM320单片机的RTC驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
注意事项
:
*
版本日期: V1.1.0 2017年
10月25日
*
版本日期: V1.1.0 2017年10月25日
*
升
级记录:
*
升级记录
:
*
*
*
*
*******************************************************************************************************************************************
*******************************************************************************************************************************************
...
@@ -24,18 +24,18 @@
...
@@ -24,18 +24,18 @@
static
uint32_t
calcWeekDay
(
uint32_t
year
,
uint32_t
month
,
uint32_t
date
);
static
uint32_t
calcWeekDay
(
uint32_t
year
,
uint32_t
month
,
uint32_t
date
);
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_Init()
*
函数名称
: RTC_Init()
*
功能说明: R
TC初始化
*
功能说明: RTC初始化
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,有效值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,有效值包括
RTC
* RTC_InitStructure * initStruct
包含RTC相关
设定值的结构体
* RTC_InitStructure * initStruct
包含RTC相关设定值的结构体
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_Init
(
RTC_TypeDef
*
RTCx
,
RTC_InitStructure
*
initStruct
)
void
RTC_Init
(
RTC_TypeDef
*
RTCx
,
RTC_InitStructure
*
initStruct
)
{
{
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_RTCBKP_Pos
);
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_RTCBKP_Pos
);
SYS
->
LRCCR
&=
~
(
1
<<
SYS_LRCCR_OFF_Pos
);
//RTC
使用32KHz RC
时钟
SYS
->
LRCCR
&=
~
(
1
<<
SYS_LRCCR_OFF_Pos
);
//RTC
使用32KHz RC时钟
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_RTC_Pos
)
|
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_RTC_Pos
)
|
((
uint32_t
)
1
<<
SYS_CLKEN_ALIVE_Pos
);
((
uint32_t
)
1
<<
SYS_CLKEN_ALIVE_Pos
);
...
@@ -72,11 +72,11 @@ void RTC_Init(RTC_TypeDef * RTCx, RTC_InitStructure * initStruct)
...
@@ -72,11 +72,11 @@ void RTC_Init(RTC_TypeDef * RTCx, RTC_InitStructure * initStruct)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_Start()
*
函数名称
: RTC_Start()
*
功能说
明: 启动RTC
*
功能说明: 启动
RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_Start
(
RTC_TypeDef
*
RTCx
)
void
RTC_Start
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -84,11 +84,11 @@ void RTC_Start(RTC_TypeDef * RTCx)
...
@@ -84,11 +84,11 @@ void RTC_Start(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_Stop()
*
函数名称
: RTC_Stop()
*
功能说明:
停止RTC
*
功能说明: 停止
RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_Stop
(
RTC_TypeDef
*
RTCx
)
void
RTC_Stop
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -96,12 +96,12 @@ void RTC_Stop(RTC_TypeDef * RTCx)
...
@@ -96,12 +96,12 @@ void RTC_Stop(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_GetDateTime()
*
函数名称
: RTC_GetDateTime()
*
功能说明:
获取当前的时间和日期
*
功能说明: 获取当前的时间和日期
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,有效值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,有效值包括
RTC
* RTC_DateTime * dateTime
获取到的时间、日
期值存入此指针指向的结构体
* RTC_DateTime * dateTime
获取到的时间、日期值存入此指针指向的结构体
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_GetDateTime
(
RTC_TypeDef
*
RTCx
,
RTC_DateTime
*
dateTime
)
void
RTC_GetDateTime
(
RTC_TypeDef
*
RTCx
,
RTC_DateTime
*
dateTime
)
{
{
...
@@ -115,12 +115,12 @@ void RTC_GetDateTime(RTC_TypeDef * RTCx, RTC_DateTime * dateTime)
...
@@ -115,12 +115,12 @@ void RTC_GetDateTime(RTC_TypeDef * RTCx, RTC_DateTime * dateTime)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_AlarmSetup()
*
函数名称
: RTC_AlarmSetup()
*
功能说明: R
TC闹钟设定
*
功能说明: RTC闹钟设定
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,有效值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,有效值包括
RTC
* RTC_AlarmStructure * alarmStruct
包含RTC闹钟
设定值的结构体
* RTC_AlarmStructure * alarmStruct
包含RTC闹钟设定值的结构体
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_AlarmSetup
(
RTC_TypeDef
*
RTCx
,
RTC_AlarmStructure
*
alarmStruct
)
void
RTC_AlarmSetup
(
RTC_TypeDef
*
RTCx
,
RTC_AlarmStructure
*
alarmStruct
)
{
{
...
@@ -143,13 +143,13 @@ void RTC_AlarmSetup(RTC_TypeDef * RTCx, RTC_AlarmStructure * alarmStruct)
...
@@ -143,13 +143,13 @@ void RTC_AlarmSetup(RTC_TypeDef * RTCx, RTC_AlarmStructure * alarmStruct)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: calcWeekDay()
*
函数名称
: calcWeekDay()
*
功能说明: 计
算指定年、月、日是星期几
*
功能说明: 计算指定年、月、日是星期几
*
输 入: uint32_t year
年
*
输 入: uint32_t year 年
* uint32_t month 月
* uint32_t month
月
* uint32_t date 日
* uint32_t date
日
*
输 出: uint32_t 0 星期日 1 星期一 ... ..
. 6 星期六
*
输 出: uint32_t 0 星期日 1 星期一 ... ... 6 星期六
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
static
uint32_t
calcWeekDay
(
uint32_t
year
,
uint32_t
month
,
uint32_t
date
)
static
uint32_t
calcWeekDay
(
uint32_t
year
,
uint32_t
month
,
uint32_t
date
)
{
{
...
@@ -173,11 +173,11 @@ static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
...
@@ -173,11 +173,11 @@ static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondEn()
*
函数名称
: RTC_IntSecondEn()
*
功能说明:
秒中断使能
*
功能说明: 秒中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntSecondEn
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntSecondEn
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -185,11 +185,11 @@ void RTC_IntSecondEn(RTC_TypeDef * RTCx)
...
@@ -185,11 +185,11 @@ void RTC_IntSecondEn(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondDis()
*
函数名称
: RTC_IntSecondDis()
*
功能说明:
秒中断禁止
*
功能说明: 秒中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntSecondDis
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntSecondDis
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -197,11 +197,11 @@ void RTC_IntSecondDis(RTC_TypeDef * RTCx)
...
@@ -197,11 +197,11 @@ void RTC_IntSecondDis(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondClr()
*
函数名称
: RTC_IntSecondClr()
*
功能说明:
秒中断标志清除
*
功能说明: 秒中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntSecondClr
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntSecondClr
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -209,11 +209,11 @@ void RTC_IntSecondClr(RTC_TypeDef * RTCx)
...
@@ -209,11 +209,11 @@ void RTC_IntSecondClr(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondStat()
*
函数名称
: RTC_IntSecondStat()
*
功能说明:
秒中断状态
*
功能说明: 秒中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 秒中断发生
0 秒中断未发生
*
输 出: uint32_t 1 秒中断发生 0 秒中断未发生
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
RTC_IntSecondStat
(
RTC_TypeDef
*
RTCx
)
uint32_t
RTC_IntSecondStat
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -221,11 +221,11 @@ uint32_t RTC_IntSecondStat(RTC_TypeDef * RTCx)
...
@@ -221,11 +221,11 @@ uint32_t RTC_IntSecondStat(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteEn()
*
函数名称
: RTC_IntMinuteEn()
*
功能说明:
分中断使能
*
功能说明: 分中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntMinuteEn
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntMinuteEn
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -233,11 +233,11 @@ void RTC_IntMinuteEn(RTC_TypeDef * RTCx)
...
@@ -233,11 +233,11 @@ void RTC_IntMinuteEn(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteDis()
*
函数名称
: RTC_IntMinuteDis()
*
功能说明:
分中断禁止
*
功能说明: 分中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntMinuteDis
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntMinuteDis
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -245,11 +245,11 @@ void RTC_IntMinuteDis(RTC_TypeDef * RTCx)
...
@@ -245,11 +245,11 @@ void RTC_IntMinuteDis(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteClr()
*
函数名称
: RTC_IntMinuteClr()
*
功能说明:
分中断标志清除
*
功能说明: 分中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntMinuteClr
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntMinuteClr
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -257,11 +257,11 @@ void RTC_IntMinuteClr(RTC_TypeDef * RTCx)
...
@@ -257,11 +257,11 @@ void RTC_IntMinuteClr(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteStat()
*
函数名称
: RTC_IntMinuteStat()
*
功能说明:
分中断状态
*
功能说明: 分中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 分中断发生
0 分中断未发生
*
输 出: uint32_t 1 分中断发生 0 分中断未发生
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
RTC_IntMinuteStat
(
RTC_TypeDef
*
RTCx
)
uint32_t
RTC_IntMinuteStat
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -269,11 +269,11 @@ uint32_t RTC_IntMinuteStat(RTC_TypeDef * RTCx)
...
@@ -269,11 +269,11 @@ uint32_t RTC_IntMinuteStat(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourEn()
*
函数名称
: RTC_IntHourEn()
*
功能说明:
时中断使能
*
功能说明: 时中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntHourEn
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntHourEn
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -281,11 +281,11 @@ void RTC_IntHourEn(RTC_TypeDef * RTCx)
...
@@ -281,11 +281,11 @@ void RTC_IntHourEn(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourDis()
*
函数名称
: RTC_IntHourDis()
*
功能说明: 时
中断禁止
*
功能说明: 时中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntHourDis
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntHourDis
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -293,11 +293,11 @@ void RTC_IntHourDis(RTC_TypeDef * RTCx)
...
@@ -293,11 +293,11 @@ void RTC_IntHourDis(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourClr()
*
函数名称
: RTC_IntHourClr()
*
功能说明: 时
中断标志清除
*
功能说明: 时中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntHourClr
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntHourClr
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -305,11 +305,11 @@ void RTC_IntHourClr(RTC_TypeDef * RTCx)
...
@@ -305,11 +305,11 @@ void RTC_IntHourClr(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourStat()
*
函数名称
: RTC_IntHourStat()
*
功能说明: 时
中断状态
*
功能说明: 时中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 时中断发生 0
时中断未发生
*
输 出: uint32_t 1 时中断发生 0 时中断未发生
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
RTC_IntHourStat
(
RTC_TypeDef
*
RTCx
)
uint32_t
RTC_IntHourStat
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -317,11 +317,11 @@ uint32_t RTC_IntHourStat(RTC_TypeDef * RTCx)
...
@@ -317,11 +317,11 @@ uint32_t RTC_IntHourStat(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateEn()
*
函数名称
: RTC_IntDateEn()
*
功能说明:
日中断使能
*
功能说明: 日中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntDateEn
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntDateEn
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -329,11 +329,11 @@ void RTC_IntDateEn(RTC_TypeDef * RTCx)
...
@@ -329,11 +329,11 @@ void RTC_IntDateEn(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateDis()
*
函数名称
: RTC_IntDateDis()
*
功能说明:
日中断禁止
*
功能说明: 日中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntDateDis
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntDateDis
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -341,11 +341,11 @@ void RTC_IntDateDis(RTC_TypeDef * RTCx)
...
@@ -341,11 +341,11 @@ void RTC_IntDateDis(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateClr()
*
函数名称
: RTC_IntDateClr()
*
功能说明:
日中断标志清除
*
功能说明: 日中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntDateClr
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntDateClr
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -353,11 +353,11 @@ void RTC_IntDateClr(RTC_TypeDef * RTCx)
...
@@ -353,11 +353,11 @@ void RTC_IntDateClr(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateStat()
*
函数名称
: RTC_IntDateStat()
*
功能说明:
日中断状态
*
功能说明: 日中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 日中断发生
0 日中断未发生
*
输 出: uint32_t 1 日中断发生 0 日中断未发生
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
RTC_IntDateStat
(
RTC_TypeDef
*
RTCx
)
uint32_t
RTC_IntDateStat
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -365,11 +365,11 @@ uint32_t RTC_IntDateStat(RTC_TypeDef * RTCx)
...
@@ -365,11 +365,11 @@ uint32_t RTC_IntDateStat(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmEn()
*
函数名称
: RTC_IntAlarmEn()
*
功能说明:
闹钟中断使能
*
功能说明: 闹钟中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntAlarmEn
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntAlarmEn
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -377,11 +377,11 @@ void RTC_IntAlarmEn(RTC_TypeDef * RTCx)
...
@@ -377,11 +377,11 @@ void RTC_IntAlarmEn(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmDis()
*
函数名称
: RTC_IntAlarmDis()
*
功能说明:
闹钟中断禁止
*
功能说明: 闹钟中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntAlarmDis
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntAlarmDis
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -389,11 +389,11 @@ void RTC_IntAlarmDis(RTC_TypeDef * RTCx)
...
@@ -389,11 +389,11 @@ void RTC_IntAlarmDis(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmClr()
*
函数名称
: RTC_IntAlarmClr()
*
功能说明:
闹钟中断标志清除
*
功能说明: 闹钟中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
RTC_IntAlarmClr
(
RTC_TypeDef
*
RTCx
)
void
RTC_IntAlarmClr
(
RTC_TypeDef
*
RTCx
)
{
{
...
@@ -401,11 +401,11 @@ void RTC_IntAlarmClr(RTC_TypeDef * RTCx)
...
@@ -401,11 +401,11 @@ void RTC_IntAlarmClr(RTC_TypeDef * RTCx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmStat()
*
函数名称
: RTC_IntAlarmStat()
*
功能说明:
闹钟中断状态
*
功能说明: 闹钟中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 闹钟中断发生
0 闹钟中断未发生
*
输 出: uint32_t 1 闹钟中断发生 0 闹钟中断未发生
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
RTC_IntAlarmStat
(
RTC_TypeDef
*
RTCx
)
uint32_t
RTC_IntAlarmStat
(
RTC_TypeDef
*
RTCx
)
{
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.h
浏览文件 @
22513fe8
...
@@ -13,17 +13,17 @@
...
@@ -13,17 +13,17 @@
typedef
struct
{
typedef
struct
{
uint16_t
Year
;
uint16_t
Year
;
uint8_t
Month
;
//
取值
1--12
uint8_t
Month
;
//
取值
1--12
uint8_t
Date
;
//
取值
1--31
uint8_t
Date
;
//
取值
1--31
uint8_t
Hour
;
//
取值
0--23
uint8_t
Hour
;
//
取值
0--23
uint8_t
Minute
;
//
取值
0--59
uint8_t
Minute
;
//
取值
0--59
uint8_t
Second
;
//
取值
0--59
uint8_t
Second
;
//
取值
0--59
uint8_t
SecondIEn
;
uint8_t
SecondIEn
;
uint8_t
MinuteIEn
;
uint8_t
MinuteIEn
;
}
RTC_InitStructure
;
}
RTC_InitStructure
;
typedef
struct
{
typedef
struct
{
uint8_t
Days
;
//RTC_SUN
、RTC_MON、RTC_TUE、RTC_WED、RTC_THU、RTC_FRI、R
TC_SAT及其或运算组合
uint8_t
Days
;
//RTC_SUN
、RTC_MON、RTC_TUE、RTC_WED、RTC_THU、RTC_FRI、RTC_SAT及其或运算组合
uint8_t
Hour
;
uint8_t
Hour
;
uint8_t
Minute
;
uint8_t
Minute
;
uint8_t
Second
;
uint8_t
Second
;
...
@@ -34,7 +34,7 @@ typedef struct {
...
@@ -34,7 +34,7 @@ typedef struct {
uint16_t
Year
;
uint16_t
Year
;
uint8_t
Month
;
uint8_t
Month
;
uint8_t
Date
;
uint8_t
Date
;
uint8_t
Day
;
//RTC_SUN
、RTC_MON、RTC_TUE、RTC_WED、RTC_THU、RT
C_FRI、RTC_SAT
uint8_t
Day
;
//RTC_SUN
、RTC_MON、RTC_TUE、RTC_WED、RTC_THU、RTC_FRI、
RTC_SAT
uint8_t
Hour
;
uint8_t
Hour
;
uint8_t
Minute
;
uint8_t
Minute
;
uint8_t
Second
;
uint8_t
Second
;
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
文件名称
: SWM320_sdio.c
*
文件名称:
SWM320_sdio.c
*
功能说明: SWM320单片机的SDIO接口驱动库
*
功能说明: SWM320单片机的SDIO接口驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
技术支持:
http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项: 为了通用性、兼容性、易用性,只支持以512字节为单位的读写
*
注意事项: 为了通用性、兼容性、易用性,只支持以512字节为单位的读写
*
版本日期: V1.1.0 2017年10月25日
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
升级记录:
*
*
*
*
*******************************************************************************************************************************************
*******************************************************************************************************************************************
...
@@ -25,11 +25,11 @@
...
@@ -25,11 +25,11 @@
SD_CardInfo
SD_cardInfo
;
SD_CardInfo
SD_cardInfo
;
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称
: SDIO_Init()
*
函数名称:
SDIO_Init()
*
功能说明: SDIO读写SD卡初始化,初始化成高速4线模式、读写以512字节大小进行
*
功能说明: SDIO读写SD卡初始化,初始化成高速4线模式、读写以512字节大小进行
*
输 入: uint32_t freq SDIO_CLK时钟频率
*
输 入: uint32_t freq SDIO_CLK时钟频率
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
SDIO_Init
(
uint32_t
freq
)
uint32_t
SDIO_Init
(
uint32_t
freq
)
{
{
...
@@ -37,7 +37,7 @@ uint32_t SDIO_Init(uint32_t freq)
...
@@ -37,7 +37,7 @@ uint32_t SDIO_Init(uint32_t freq)
uint32_t
resp
,
resps
[
4
];
uint32_t
resp
,
resps
[
4
];
SYS
->
CLKDIV
&=
~
SYS_CLKDIV_SDIO_Msk
;
SYS
->
CLKDIV
&=
~
SYS_CLKDIV_SDIO_Msk
;
if
(
SystemCoreClock
>
80000000
)
//SDIO
时钟需要小于5
2MHz
if
(
SystemCoreClock
>
80000000
)
//SDIO
时钟需要小于52
MHz
SYS
->
CLKDIV
|=
(
2
<<
SYS_CLKDIV_SDIO_Pos
);
//SDCLK = SYSCLK / 4
SYS
->
CLKDIV
|=
(
2
<<
SYS_CLKDIV_SDIO_Pos
);
//SDCLK = SYSCLK / 4
else
else
SYS
->
CLKDIV
|=
(
1
<<
SYS_CLKDIV_SDIO_Pos
);
//SDCLK = SYSCLK / 2
SYS
->
CLKDIV
|=
(
1
<<
SYS_CLKDIV_SDIO_Pos
);
//SDCLK = SYSCLK / 2
...
@@ -64,7 +64,7 @@ uint32_t SDIO_Init(uint32_t freq)
...
@@ -64,7 +64,7 @@ uint32_t SDIO_Init(uint32_t freq)
SDIO_SendCmd
(
SD_CMD_GO_IDLE_STATE
,
0x00
,
SD_RESP_NO
,
0
);
//CMD0: GO_IDLE_STATE
SDIO_SendCmd
(
SD_CMD_GO_IDLE_STATE
,
0x00
,
SD_RESP_NO
,
0
);
//CMD0: GO_IDLE_STATE
res
=
SDIO_SendCmd
(
SD_CMD_SEND_IF_COND
,
0x1AA
,
SD_RESP_32b
,
&
resp
);
//CMD8: SEND_IF_COND,
检测工作电压、检测是否支持S
D 2.0
res
=
SDIO_SendCmd
(
SD_CMD_SEND_IF_COND
,
0x1AA
,
SD_RESP_32b
,
&
resp
);
//CMD8: SEND_IF_COND,
检测工作电压、检测是否支持SD 2.0
if
(
res
!=
SD_RES_OK
)
if
(
res
!=
SD_RES_OK
)
return
res
;
return
res
;
...
@@ -77,50 +77,50 @@ uint32_t SDIO_Init(uint32_t freq)
...
@@ -77,50 +77,50 @@ uint32_t SDIO_Init(uint32_t freq)
if
(
res
!=
SD_RES_OK
)
if
(
res
!=
SD_RES_OK
)
return
res
;
return
res
;
if
(
resp
!=
0x120
)
return
SD_RES_ERR
;
//
不是SD卡,可能是MMC卡
if
(
resp
!=
0x120
)
return
SD_RES_ERR
;
//
不是SD卡,可能是MMC卡
if
(
SD_cardInfo
.
CardType
==
SDIO_STD_CAPACITY_SD_CARD_V2_0
)
if
(
SD_cardInfo
.
CardType
==
SDIO_STD_CAPACITY_SD_CARD_V2_0
)
SDIO_SendCmd
(
SD_CMD_SD_APP_OP_COND
,
0x80100000
|
0x40000000
,
SD_RESP_32b
,
&
resp
);
SDIO_SendCmd
(
SD_CMD_SD_APP_OP_COND
,
0x80100000
|
0x40000000
,
SD_RESP_32b
,
&
resp
);
else
else
SDIO_SendCmd
(
SD_CMD_SD_APP_OP_COND
,
0x80100000
|
0x00000000
,
SD_RESP_32b
,
&
resp
);
SDIO_SendCmd
(
SD_CMD_SD_APP_OP_COND
,
0x80100000
|
0x00000000
,
SD_RESP_32b
,
&
resp
);
}
while
(((
resp
>>
31
)
&
0x01
)
==
0
);
//
上电没完成时
resp[31] == 0
}
while
(((
resp
>>
31
)
&
0x01
)
==
0
);
//
上电没完成时res
p[31] == 0
if
(((
resp
>>
30
)
&
0x01
)
==
1
)
SD_cardInfo
.
CardType
=
SDIO_HIGH_CAPACITY_SD_CARD
;
if
(((
resp
>>
30
)
&
0x01
)
==
1
)
SD_cardInfo
.
CardType
=
SDIO_HIGH_CAPACITY_SD_CARD
;
SDIO_SendCmd
(
SD_CMD_ALL_SEND_CID
,
0x00
,
SD_RESP_128b
,
resps
);
//CMD2: SD_CMD_ALL_SEND_CID
,获取C
ID
SDIO_SendCmd
(
SD_CMD_ALL_SEND_CID
,
0x00
,
SD_RESP_128b
,
resps
);
//CMD2: SD_CMD_ALL_SEND_CID
,获取CI
D
parseCID
(
resps
);
parseCID
(
resps
);
SDIO_SendCmd
(
SD_CMD_SET_REL_ADDR
,
0x00
,
SD_RESP_32b
,
&
resp
);
//CMD3: SD_CMD_SET_REL_ADDR
,设置R
CA
SDIO_SendCmd
(
SD_CMD_SET_REL_ADDR
,
0x00
,
SD_RESP_32b
,
&
resp
);
//CMD3: SD_CMD_SET_REL_ADDR
,设置RC
A
SD_cardInfo
.
RCA
=
resp
>>
16
;
SD_cardInfo
.
RCA
=
resp
>>
16
;
SDIO_SendCmd
(
SD_CMD_SEND_CSD
,
SD_cardInfo
.
RCA
<<
16
,
SD_RESP_128b
,
resps
);
//CMD9: SD_CMD_SEND_CSD
,获取C
SD
SDIO_SendCmd
(
SD_CMD_SEND_CSD
,
SD_cardInfo
.
RCA
<<
16
,
SD_RESP_128b
,
resps
);
//CMD9: SD_CMD_SEND_CSD
,获取CS
D
parseCSD
(
resps
);
parseCSD
(
resps
);
if
(
SD_cardInfo
.
CardBlockSize
<
0x200
)
return
SD_RES_ERR
;
//
本驱动只支持以512字节为单位的读写,所以最大读写单位必须不小于
512
if
(
SD_cardInfo
.
CardBlockSize
<
0x200
)
return
SD_RES_ERR
;
//
本驱动只支持以512字节为单位的读写,所以最大读写单位必须不小于512
SDIO
->
CR2
&=
~
(
SDIO_CR2_SDCLKEN_Msk
|
SDIO_CR2_SDCLKDIV_Msk
);
SDIO
->
CR2
&=
~
(
SDIO_CR2_SDCLKEN_Msk
|
SDIO_CR2_SDCLKDIV_Msk
);
SDIO
->
CR2
|=
(
1
<<
SDIO_CR2_SDCLKEN_Pos
)
|
SDIO
->
CR2
|=
(
1
<<
SDIO_CR2_SDCLKEN_Pos
)
|
(
calcSDCLKDiv
(
freq
)
<<
SDIO_CR2_SDCLKDIV_Pos
);
//
初始化完成,SDCLK切换到高速
(
calcSDCLKDiv
(
freq
)
<<
SDIO_CR2_SDCLKDIV_Pos
);
//
初始化完成,SDCLK切换到高速
SDIO_SendCmd
(
SD_CMD_SEL_DESEL_CARD
,
SD_cardInfo
.
RCA
<<
16
,
SD_RESP_32b_busy
,
&
resp
);
//CMD7:
选中卡,从Standy模式进入Transfer模式
SDIO_SendCmd
(
SD_CMD_SEL_DESEL_CARD
,
SD_cardInfo
.
RCA
<<
16
,
SD_RESP_32b_busy
,
&
resp
);
//CMD7:
选中卡,从Standy模式进入Transfer模式
SDIO
->
IF
=
SDIO_IF_TRXDONE_Msk
;
SDIO
->
IF
=
SDIO_IF_TRXDONE_Msk
;
SDIO_SendCmd
(
SD_CMD_APP_CMD
,
SD_cardInfo
.
RCA
<<
16
,
SD_RESP_32b
,
&
resp
);
SDIO_SendCmd
(
SD_CMD_APP_CMD
,
SD_cardInfo
.
RCA
<<
16
,
SD_RESP_32b
,
&
resp
);
SDIO_SendCmd
(
SD_CMD_APP_SD_SET_BUSWIDTH
,
SD_BUSWIDTH_4b
,
SD_RESP_32b
,
&
resp
);
//
切换成4位总线模式
SDIO_SendCmd
(
SD_CMD_APP_SD_SET_BUSWIDTH
,
SD_BUSWIDTH_4b
,
SD_RESP_32b
,
&
resp
);
//
切换成4位总线模式
SDIO
->
CR1
|=
(
1
<<
SDIO_CR1_4BIT_Pos
);
SDIO
->
CR1
|=
(
1
<<
SDIO_CR1_4BIT_Pos
);
SDIO_SendCmd
(
SD_CMD_SET_BLOCKLEN
,
512
,
SD_RESP_32b
,
&
resp
);
//
固定块大小位512字节
SDIO_SendCmd
(
SD_CMD_SET_BLOCKLEN
,
512
,
SD_RESP_32b
,
&
resp
);
//
固定块大小位512字节
SDIO
->
BLK
=
512
;
SDIO
->
BLK
=
512
;
...
@@ -128,12 +128,12 @@ uint32_t SDIO_Init(uint32_t freq)
...
@@ -128,12 +128,12 @@ uint32_t SDIO_Init(uint32_t freq)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称
: SDIO_BlockWrite()
*
函数名称:
SDIO_BlockWrite()
*
功能说明: 向SD卡写入数据
*
功能说明: 向SD卡写入数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint32_t buff[]
要写入的数据
* uint32_t buff[]
要写入的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
SDIO_BlockWrite
(
uint32_t
block_addr
,
uint32_t
buff
[])
uint32_t
SDIO_BlockWrite
(
uint32_t
block_addr
,
uint32_t
buff
[])
{
{
...
@@ -159,13 +159,13 @@ uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
...
@@ -159,13 +159,13 @@ uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称
: SDIO_MultiBlockWrite()
*
函数名称:
SDIO_MultiBlockWrite()
*
功能说明: 向SD卡写入多块数据
*
功能说明: 向SD卡写入多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要写入的块数
* uint16_t block_cnt
要写入的块数
* uint32_t buff[]
要写入的数据
* uint32_t buff[]
要写入的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
输 出: 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
[])
uint32_t
SDIO_MultiBlockWrite
(
uint32_t
block_addr
,
uint16_t
block_cnt
,
uint32_t
buff
[])
{
{
...
@@ -194,13 +194,13 @@ uint32_t SDIO_MultiBlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t
...
@@ -194,13 +194,13 @@ uint32_t SDIO_MultiBlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称
: SDIO_DMABlockWrite()
*
函数名称:
SDIO_DMABlockWrite()
*
功能说明: 通过DMA向SD卡写入多块数据
*
功能说明: 通过DMA向SD卡写入多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要写入的块数
* uint16_t block_cnt
要写入的块数
* uint32_t buff[]
要写入的数据
* uint32_t buff[]
要写入的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
输 出: 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
[])
uint32_t
SDIO_DMABlockWrite
(
uint32_t
block_addr
,
uint16_t
block_cnt
,
uint32_t
buff
[])
{
{
...
@@ -223,12 +223,12 @@ uint32_t SDIO_DMABlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t bu
...
@@ -223,12 +223,12 @@ uint32_t SDIO_DMABlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t bu
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称
: SDIO_BlockRead()
*
函数名称:
SDIO_BlockRead()
*
功能说明: 从SD卡读出数据
*
功能说明: 从SD卡读出数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint32_t buff[]
读出的数据
* uint32_t buff[]
读出的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
SDIO_BlockRead
(
uint32_t
block_addr
,
uint32_t
buff
[])
uint32_t
SDIO_BlockRead
(
uint32_t
block_addr
,
uint32_t
buff
[])
{
{
...
@@ -254,13 +254,13 @@ uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
...
@@ -254,13 +254,13 @@ uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称
: SDIO_MultiBlockRead()
*
函数名称:
SDIO_MultiBlockRead()
*
功能说明: 从SD卡读出多块数据
*
功能说明: 从SD卡读出多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要读出的块数
* uint16_t block_cnt
要读出的块数
* uint32_t buff[]
读出的数据
* uint32_t buff[]
读出的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
输 出: 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
[])
uint32_t
SDIO_MultiBlockRead
(
uint32_t
block_addr
,
uint16_t
block_cnt
,
uint32_t
buff
[])
{
{
...
@@ -289,13 +289,13 @@ uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t b
...
@@ -289,13 +289,13 @@ uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t b
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称
: SDIO_DMABlockRead()
*
函数名称:
SDIO_DMABlockRead()
*
功能说明: 通过DMA从SD卡读出多块数据
*
功能说明: 通过DMA从SD卡读出多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要读出的块数
* uint16_t block_cnt
要读出的块数
* uint32_t buff[]
读出的数据
* uint32_t buff[]
读出的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
输 出: 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
[])
uint32_t
SDIO_DMABlockRead
(
uint32_t
block_addr
,
uint16_t
block_cnt
,
uint32_t
buff
[])
{
{
...
@@ -318,20 +318,20 @@ uint32_t SDIO_DMABlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buf
...
@@ -318,20 +318,20 @@ uint32_t SDIO_DMABlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buf
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
函数名称
: _SDIO_SendCmd()
*
函数名称:
_SDIO_SendCmd()
*
功能说明: SDIO向SD卡发送命令
*
功能说明: SDIO向SD卡发送命令
*
输 入: uint32_t cmd 命令索引
*
输 入: uint32_t cmd 命令索引
* uint32_t arg
命令参数
* uint32_t arg
命令参数
* uint32_t
_resp_type 响应类型,取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、S
D_RESP_32b_busy
* uint32_t
resp_type 响应类型,取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、SD_R
ESP_32b_busy
* uint32_t *resp_data
响应内容
* uint32_t *resp_data
响应内容
* uint32_t have_data
是否有数据传输
* uint32_t have_data
是否有数据传输
* uint32_t data_read 1
读SD卡 0 写SD卡
* uint32_t data_read 1
读SD卡 0 写SD卡
* uint16_t block_cnt
读写块个数
* uint16_t block_cnt
读写块个数
* uint32_t use_dma 1
使用DMA搬运数据
* uint32_t use_dma 1
使用DMA搬运数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
输 出: 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
)
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
)
{
{
SDIO
->
BLK
&=
~
SDIO_BLK_COUNT_Msk
;
SDIO
->
BLK
&=
~
SDIO_BLK_COUNT_Msk
;
SDIO
->
BLK
|=
(
block_cnt
<<
SDIO_BLK_COUNT_Pos
);
SDIO
->
BLK
|=
(
block_cnt
<<
SDIO_BLK_COUNT_Pos
);
...
@@ -341,7 +341,7 @@ uint32_t _SDIO_SendCmd(uint32_t cmd, uint32_t arg, uint32_t _resp_type, uint32_t
...
@@ -341,7 +341,7 @@ uint32_t _SDIO_SendCmd(uint32_t cmd, uint32_t arg, uint32_t _resp_type, uint32_t
(
0
<<
SDIO_CMD_CMDTYPE_Pos
)
|
(
0
<<
SDIO_CMD_CMDTYPE_Pos
)
|
(
0
<<
SDIO_CMD_IDXCHECK_Pos
)
|
(
0
<<
SDIO_CMD_IDXCHECK_Pos
)
|
(
0
<<
SDIO_CMD_CRCCHECK_Pos
)
|
(
0
<<
SDIO_CMD_CRCCHECK_Pos
)
|
(
_resp_type
<<
SDIO_CMD_RESPTYPE_Pos
)
|
(
resp_type
<<
SDIO_CMD_RESPTYPE_Pos
)
|
(
have_data
<<
SDIO_CMD_HAVEDATA_Pos
)
|
(
have_data
<<
SDIO_CMD_HAVEDATA_Pos
)
|
(
data_read
<<
SDIO_CMD_DIRREAD_Pos
)
|
(
data_read
<<
SDIO_CMD_DIRREAD_Pos
)
|
((
block_cnt
>
1
)
<<
SDIO_CMD_MULTBLK_Pos
)
|
((
block_cnt
>
1
)
<<
SDIO_CMD_MULTBLK_Pos
)
|
...
@@ -366,14 +366,14 @@ uint32_t _SDIO_SendCmd(uint32_t cmd, uint32_t arg, uint32_t _resp_type, uint32_t
...
@@ -366,14 +366,14 @@ uint32_t _SDIO_SendCmd(uint32_t cmd, uint32_t arg, uint32_t _resp_type, uint32_t
}
}
SDIO
->
IF
=
SDIO_IF_CMDDONE_Msk
;
SDIO
->
IF
=
SDIO_IF_CMDDONE_Msk
;
if
(
_
resp_type
==
SD_RESP_32b
)
if
(
resp_type
==
SD_RESP_32b
)
{
{
resp_data
[
0
]
=
SDIO
->
RESP
[
0
];
resp_data
[
0
]
=
SDIO
->
RESP
[
0
];
}
}
else
if
(
_
resp_type
==
SD_RESP_128b
)
else
if
(
resp_type
==
SD_RESP_128b
)
{
{
//
寄存器中将CID/CSD[127-8]依次存放在了RESP3-0[119-0],最低位的CRC被丢掉
//
寄存器中将CID/CSD[127-8]依次存放在了RESP3-0[119-0],最低位的CRC被丢掉
//
读出数据时调整了顺序,将CID/CSD[127-8]存放在resp_data0-3[127-8],最低8位填充
0x00
//
读出数据时调整了顺序,将CID/CSD[127-8]存放在resp_data0-3[127-8],最低8位填充0x00
resp_data
[
0
]
=
(
SDIO
->
RESP
[
3
]
<<
8
)
+
((
SDIO
->
RESP
[
2
]
>>
24
)
&
0xFF
);
resp_data
[
0
]
=
(
SDIO
->
RESP
[
3
]
<<
8
)
+
((
SDIO
->
RESP
[
2
]
>>
24
)
&
0xFF
);
resp_data
[
1
]
=
(
SDIO
->
RESP
[
2
]
<<
8
)
+
((
SDIO
->
RESP
[
1
]
>>
24
)
&
0xFF
);
resp_data
[
1
]
=
(
SDIO
->
RESP
[
2
]
<<
8
)
+
((
SDIO
->
RESP
[
1
]
>>
24
)
&
0xFF
);
resp_data
[
2
]
=
(
SDIO
->
RESP
[
1
]
<<
8
)
+
((
SDIO
->
RESP
[
0
]
>>
24
)
&
0xFF
);
resp_data
[
2
]
=
(
SDIO
->
RESP
[
1
]
<<
8
)
+
((
SDIO
->
RESP
[
0
]
>>
24
)
&
0xFF
);
...
@@ -538,7 +538,7 @@ void parseCSD(uint32_t CSD_Tab[4])
...
@@ -538,7 +538,7 @@ void parseCSD(uint32_t CSD_Tab[4])
/*!< Byte 10 */
/*!< Byte 10 */
tmp
=
(
uint8_t
)((
CSD_Tab
[
2
]
&
0x0000FF00
)
>>
8
);
tmp
=
(
uint8_t
)((
CSD_Tab
[
2
]
&
0x0000FF00
)
>>
8
);
SD_cardInfo
.
CardCapacity
=
(
SD_cardInfo
.
SD_csd
.
DeviceSize
+
1
)
*
512
*
1024
;
SD_cardInfo
.
CardCapacity
=
(
uint64_t
)(
SD_cardInfo
.
SD_csd
.
DeviceSize
+
1
)
*
512
*
1024
;
SD_cardInfo
.
CardBlockSize
=
512
;
SD_cardInfo
.
CardBlockSize
=
512
;
}
}
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.h
浏览文件 @
22513fe8
...
@@ -35,10 +35,10 @@
...
@@ -35,10 +35,10 @@
#define SD_CMD_SDIO_RW_EXTENDED ((uint8_t)53)
#define SD_CMD_SDIO_RW_EXTENDED ((uint8_t)53)
#define SD_RESP_NO 0 //0
无
响应
#define SD_RESP_NO 0 //0
无响应
#define SD_RESP_32b 2 //2 32
位响
应
#define SD_RESP_32b 2 //2 32
位响应
#define SD_RESP_128b 1 //1 128
位响
应
#define SD_RESP_128b 1 //1 128
位响应
#define SD_RESP_32b_busy 3 //3 32
位响
应,check Busy after response
#define SD_RESP_32b_busy 3 //3 32
位响应,
check Busy after response
#define SD_BUSWIDTH_1b 0
#define SD_BUSWIDTH_1b 0
#define SD_BUSWIDTH_4b 2
#define SD_BUSWIDTH_4b 2
...
@@ -133,11 +133,11 @@ uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t b
...
@@ -133,11 +133,11 @@ uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t b
uint32_t
SDIO_DMABlockWrite
(
uint32_t
block_addr
,
uint16_t
block_cnt
,
uint32_t
buff
[]);
uint32_t
SDIO_DMABlockWrite
(
uint32_t
block_addr
,
uint16_t
block_cnt
,
uint32_t
buff
[]);
uint32_t
SDIO_DMABlockRead
(
uint32_t
block_addr
,
uint16_t
block_cnt
,
uint32_t
buff
[]);
uint32_t
SDIO_DMABlockRead
(
uint32_t
block_addr
,
uint16_t
block_cnt
,
uint32_t
buff
[]);
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
);
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
);
#define SDIO_SendCmd(cmd, arg,
_resp_type, resp_data) _SDIO_SendCmd(cmd, arg, _
resp_type, resp_data, 0, 0, 0, 0)
#define SDIO_SendCmd(cmd, arg,
resp_type, resp_data) _SDIO_SendCmd(cmd, arg,
resp_type, resp_data, 0, 0, 0, 0)
#define SDIO_SendCmdWithData(cmd, arg,
_resp_type, resp_data, data_read, block_cnt) _SDIO_SendCmd(cmd, arg, _
resp_type, resp_data, 1, data_read, block_cnt, 0)
#define SDIO_SendCmdWithData(cmd, arg,
resp_type, resp_data, data_read, block_cnt) _SDIO_SendCmd(cmd, arg,
resp_type, resp_data, 1, data_read, block_cnt, 0)
#define SDIO_SendCmdWithDataByDMA(cmd, arg,
_resp_type, resp_data, data_read, block_cnt) _SDIO_SendCmd(cmd, arg, _
resp_type, resp_data, 1, data_read, block_cnt, 1)
#define SDIO_SendCmdWithDataByDMA(cmd, arg,
resp_type, resp_data, data_read, block_cnt) _SDIO_SendCmd(cmd, arg,
resp_type, resp_data, 1, data_read, block_cnt, 1)
void
parseCID
(
uint32_t
CID_Tab
[
4
]);
void
parseCID
(
uint32_t
CID_Tab
[
4
]);
void
parseCSD
(
uint32_t
CID_Tab
[
4
]);
void
parseCSD
(
uint32_t
CID_Tab
[
4
]);
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
文
件名称: SWM320_sdram.c
*
文件名称
: SWM320_sdram.c
*
功能说明: SWM320单片机
的SDRAM驱动程序
*
功能说明: SWM320单片机的SDRAM驱动程序
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
注意事项
:
*
版本日期: V1.1.0 2017年
10月25日
*
版本日期: V1.1.0 2017年10月25日
*
升
级记录:
*
升级记录
:
*
*
*
*
*******************************************************************************************************************************************
*******************************************************************************************************************************************
...
@@ -22,11 +22,11 @@
...
@@ -22,11 +22,11 @@
#include "SWM320_sdram.h"
#include "SWM320_sdram.h"
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDRAM_Init()
*
函数名称
: SDRAM_Init()
*
功能说明: SDR
AM控制器初始化
*
功能说明: SDRAM控制器初始化
*
输 入: SDRAM_InitStructure * initStruct 包含 SDRAM
控制器相关设定值的结构体
*
输 入: SDRAM_InitStructure * initStruct 包含 SDRAM 控制器相关设定值的结构体
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
SDRAM_Init
(
SDRAM_InitStructure
*
initStruct
)
void
SDRAM_Init
(
SDRAM_InitStructure
*
initStruct
)
{
{
...
@@ -35,9 +35,9 @@ void SDRAM_Init(SDRAM_InitStructure * initStruct)
...
@@ -35,9 +35,9 @@ void SDRAM_Init(SDRAM_InitStructure * initStruct)
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_SDRAM_Pos
);
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_SDRAM_Pos
);
SYS
->
CLKDIV
&=
~
SYS_CLKDIV_SDRAM_Msk
;
SYS
->
CLKDIV
&=
~
SYS_CLKDIV_SDRAM_Msk
;
SYS
->
CLKDIV
|=
(
1
<<
SYS_CLKDIV_SDRAM_Pos
);
//2
分
频
SYS
->
CLKDIV
|=
(
1
<<
SYS_CLKDIV_SDRAM_Pos
);
//2
分频
SDRAMC
->
CR0
=
(
2
<<
SDRAMC_CR0_BURSTLEN_Pos
)
|
//2 Burst Length
为
4
SDRAMC
->
CR0
=
(
2
<<
SDRAMC_CR0_BURSTLEN_Pos
)
|
//2 Burst Length
为
4
(
initStruct
->
CASLatency
<<
SDRAMC_CR0_CASDELAY_Pos
);
(
initStruct
->
CASLatency
<<
SDRAMC_CR0_CASDELAY_Pos
);
SDRAMC
->
CR1
=
(
initStruct
->
CellSize
<<
SDRAMC_CR1_CELLSIZE_Pos
)
|
SDRAMC
->
CR1
=
(
initStruct
->
CellSize
<<
SDRAMC_CR1_CELLSIZE_Pos
)
|
...
@@ -69,11 +69,11 @@ void SDRAM_Init(SDRAM_InitStructure * initStruct)
...
@@ -69,11 +69,11 @@ void SDRAM_Init(SDRAM_InitStructure * initStruct)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDRAM_Enable()
*
函数名称
: SDRAM_Enable()
*
功能说明: SDRAM使能,
使能后可读写SDRAM
*
功能说明: SDRAM使能,使能后可读写
SDRAM
*
输 入
: 无
*
输 入: 无
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
SDRAM_Enable
(
void
)
void
SDRAM_Enable
(
void
)
{
{
...
@@ -86,11 +86,11 @@ void SDRAM_Enable(void)
...
@@ -86,11 +86,11 @@ void SDRAM_Enable(void)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SDRAM_Disable()
*
函数名称
: SDRAM_Disable()
*
功能说明: SDRAM禁能,禁能后SDRAM
颗粒进入低功耗模式、并自刷新,不可读写
*
功能说明: SDRAM禁能,禁能后SDRAM颗粒进入低功耗模式、并自刷新,不可读写
*
输 入
: 无
*
输 入: 无
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
SDRAM_Disable
(
void
)
void
SDRAM_Disable
(
void
)
{
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.h
浏览文件 @
22513fe8
...
@@ -2,17 +2,17 @@
...
@@ -2,17 +2,17 @@
#define __SWM320_SDRAM_H__
#define __SWM320_SDRAM_H__
typedef
struct
{
typedef
struct
{
uint8_t
CellSize
;
// SDRAM
颗粒的容量,SDRAM_CELLSIZE_16Mb、SDRAM_CELLSIZE_64Mb、SDRAM_CELLSIZE_128Mb、S
DRAM_CELLSIZE_256Mb
uint8_t
CellSize
;
// SDRAM
颗粒的容量,SDRAM_CELLSIZE_16Mb、SDRAM_CELLSIZE_64Mb、SDRAM_CELLSIZE_128Mb、SDRA
M_CELLSIZE_256Mb
uint8_t
CellBank
;
// SDRAM
颗粒有几个bank,SDRAM_CELLBANK_2、S
DRAM_CELLBANK_4
uint8_t
CellBank
;
// SDRAM
颗粒有几个bank,SDRAM_CELLBANK_2、SDR
AM_CELLBANK_4
uint8_t
CellWidth
;
// SDRAM
颗粒的位宽,SDRAM_CELLWIDTH_16、S
DRAM_CELLWIDTH_32
uint8_t
CellWidth
;
// SDRAM
颗粒的位宽,SDRAM_CELLWIDTH_16、SDRA
M_CELLWIDTH_32
uint8_t
CASLatency
;
//
列地址到有效数据输出间隔,SDRAM_CASLATENCY_2、S
DRAM_CASLATENCY_3
uint8_t
CASLatency
;
//
列地址到有效数据输出间隔,SDRAM_CASLATENCY_2、SDRAM_C
ASLATENCY_3
uint8_t
TimeTMRD
;
// MRS to New Command
uint8_t
TimeTMRD
;
// MRS to New Command
uint8_t
TimeTRRD
;
// Activate to activate on different banks
uint8_t
TimeTRRD
;
// Activate to activate on different banks
uint8_t
TimeTRAS
;
// Self refresh time
,最小Self-refresh周期
uint8_t
TimeTRAS
;
// Self refresh time
,最小Self-refresh周期
uint8_t
TimeTRC
;
// Row cycle delay
,Refresh命令到Activate命令间延时,也是两个连续Refresh命令间延时
uint8_t
TimeTRC
;
// Row cycle delay
,Refresh命令到Activate命令间延时,也是两个连续Refresh命令间延时
uint8_t
TimeTRCD
;
// Row to column delay
,行地址到列地址间延时,也即Activate命令到读写命令间延时
uint8_t
TimeTRCD
;
// Row to column delay
,行地址到列地址间延时,也即Activate命令到读写命令间延时
uint8_t
TimeTRP
;
// Row precharge delay
,Precharge命令到另一个命令间延时
uint8_t
TimeTRP
;
// Row precharge delay
,Precharge命令到另一个命令间延时
}
SDRAM_InitStructure
;
}
SDRAM_InitStructure
;
#define SDRAM_CELLSIZE_16Mb 3
#define SDRAM_CELLSIZE_16Mb 3
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.c
浏览文件 @
22513fe8
此差异已折叠。
点击以展开。
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.h
浏览文件 @
22513fe8
...
@@ -2,26 +2,26 @@
...
@@ -2,26 +2,26 @@
#define __SWM320_SPI_H__
#define __SWM320_SPI_H__
typedef
struct
{
typedef
struct
{
uint8_t
FrameFormat
;
//
帧格式:SPI_FORMAT_SPI、S
PI_FORMAT_TI_SSI
uint8_t
FrameFormat
;
//
帧格式:SPI_FORMAT_SPI、SPI
_FORMAT_TI_SSI
uint8_t
SampleEdge
;
//
在SPI帧格式下,选择数据采样边沿:SPI_FIRST_EDGE、S
PI_SECOND_EDGE
uint8_t
SampleEdge
;
//
在SPI帧格式下,选择数据采样边沿:SPI_FIRST_EDGE、SPI_SEC
OND_EDGE
uint8_t
IdleLevel
;
//
在SPI帧格式下,选择空闲时(无数据传输时)时钟线的电平:SPI_LOW_LEVEL、S
PI_HIGH_LEVEL
uint8_t
IdleLevel
;
//
在SPI帧格式下,选择空闲时(无数据传输时)时钟线的电平:SPI_LOW_LEVEL、SPI_HIGH_LEVE
L
uint8_t
WordSize
;
//
字长度, 有效值4
-16
uint8_t
WordSize
;
//
字长度, 有效值4-
16
uint8_t
Master
;
//1
主机模式 0 从机模式
uint8_t
Master
;
//1
主机模式 0 从机模式
uint8_t
clkDiv
;
//SPI_CLK = SYS_CLK / clkDiv
,有效值:SPI_CLKDIV_4、SPI_CLKDIV_8、... ... 、S
PI_CLKDIV_512
uint8_t
clkDiv
;
//SPI_CLK = SYS_CLK / clkDiv
,有效值:SPI_CLKDIV_4、SPI_CLKDIV_8、... ... 、SPI
_CLKDIV_512
uint8_t
RXHFullIEn
;
//
接收FIFO半满中断使能
uint8_t
RXHFullIEn
;
//
接收FIFO半满中断使能
uint8_t
TXEmptyIEn
;
//
发送FIFO 空中断使能
uint8_t
TXEmptyIEn
;
//
发送FIFO 空中断使能
uint8_t
TXCompleteIEn
;
//
发送FIFO 空且发送移位寄存器空中断使能
uint8_t
TXCompleteIEn
;
//
发送FIFO 空且发送移位寄存器空中断使能
}
SPI_InitStructure
;
}
SPI_InitStructure
;
#define SPI_FORMAT_SPI 0 //Motorola SPI
格式
#define SPI_FORMAT_SPI 0 //Motorola SPI
格式
#define SPI_FORMAT_TI_SSI 1 //TI SSI
格式
#define SPI_FORMAT_TI_SSI 1 //TI SSI
格式
#define SPI_FIRST_EDGE 0 //
第一个时钟沿开始采样
#define SPI_FIRST_EDGE 0 //
第一个时钟沿开始采样
#define SPI_SECOND_EDGE 1 //
第二个时钟沿开始采样
#define SPI_SECOND_EDGE 1 //
第二个时钟沿开始采样
#define SPI_LOW_LEVEL 0 //
空闲时时钟线保持低电平
#define SPI_LOW_LEVEL 0 //
空闲时时钟线保持低电平
#define SPI_HIGH_LEVEL 1 //
空闲时时钟线保持高电平
#define SPI_HIGH_LEVEL 1 //
空闲时时钟线保持高电平
#define SPI_CLKDIV_4 0
#define SPI_CLKDIV_4 0
#define SPI_CLKDIV_8 1
#define SPI_CLKDIV_8 1
...
@@ -34,18 +34,18 @@ typedef struct {
...
@@ -34,18 +34,18 @@ typedef struct {
void
SPI_Init
(
SPI_TypeDef
*
SPIx
,
SPI_InitStructure
*
initStruct
);
//SPI
初始化
void
SPI_Init
(
SPI_TypeDef
*
SPIx
,
SPI_InitStructure
*
initStruct
);
//SPI
初始化
void
SPI_Open
(
SPI_TypeDef
*
SPIx
);
//SPI
打开,允许收发
void
SPI_Open
(
SPI_TypeDef
*
SPIx
);
//SPI
打开,允许收发
void
SPI_Close
(
SPI_TypeDef
*
SPIx
);
//SPI
关闭,禁止收发
void
SPI_Close
(
SPI_TypeDef
*
SPIx
);
//SPI
关闭,禁止收发
uint32_t
SPI_Read
(
SPI_TypeDef
*
SPIx
);
uint32_t
SPI_Read
(
SPI_TypeDef
*
SPIx
);
void
SPI_Write
(
SPI_TypeDef
*
SPIx
,
uint32_t
data
);
void
SPI_Write
(
SPI_TypeDef
*
SPIx
,
uint32_t
data
);
void
SPI_WriteWithWait
(
SPI_TypeDef
*
SPIx
,
uint32_t
data
);
void
SPI_WriteWithWait
(
SPI_TypeDef
*
SPIx
,
uint32_t
data
);
uint32_t
SPI_ReadWrite
(
SPI_TypeDef
*
SPIx
,
uint32_t
data
);
uint32_t
SPI_ReadWrite
(
SPI_TypeDef
*
SPIx
,
uint32_t
data
);
uint32_t
SPI_IsRXEmpty
(
SPI_TypeDef
*
SPIx
);
//
接收FIFO是否空,如果不空则可以继续S
PI_Read()
uint32_t
SPI_IsRXEmpty
(
SPI_TypeDef
*
SPIx
);
//
接收FIFO是否空,如果不空则可以继续SPI_Read
()
uint32_t
SPI_IsTXFull
(
SPI_TypeDef
*
SPIx
);
//
发送FIFO是否满,如果不满则可以继续S
PI_Write()
uint32_t
SPI_IsTXFull
(
SPI_TypeDef
*
SPIx
);
//
发送FIFO是否满,如果不满则可以继续SPI_Wri
te()
uint32_t
SPI_IsTXEmpty
(
SPI_TypeDef
*
SPIx
);
//
发送FIFO是否空
uint32_t
SPI_IsTXEmpty
(
SPI_TypeDef
*
SPIx
);
//
发送FIFO是否空
void
SPI_INTRXHalfFullEn
(
SPI_TypeDef
*
SPIx
);
void
SPI_INTRXHalfFullEn
(
SPI_TypeDef
*
SPIx
);
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sram.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
文
件名称: SWM320_sram.c
*
文件名称
: SWM320_sram.c
*
功能说明: SWM320单片
机的SRAM驱动程序
*
功能说明: SWM320单片机的SRAM驱动程序
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
注意事项
:
*
版本日期: V1.1.0 2017年
10月25日
*
版本日期: V1.1.0 2017年10月25日
*
升
级记录:
*
升级记录
:
*
*
*
*
*******************************************************************************************************************************************
*******************************************************************************************************************************************
...
@@ -23,17 +23,17 @@
...
@@ -23,17 +23,17 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: SRAM_Init()
*
函数名称
: SRAM_Init()
*
功能说明: SR
AM控制器初始化
*
功能说明: SRAM控制器初始化
*
输 入: SRAM_InitStructure * initStruct 包含 SRAM
控制器相关设定值的结构体
*
输 入: SRAM_InitStructure * initStruct 包含 SRAM 控制器相关设定值的结构体
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
SRAM_Init
(
SRAM_InitStructure
*
initStruct
)
void
SRAM_Init
(
SRAM_InitStructure
*
initStruct
)
{
{
uint32_t
i
;
uint32_t
i
;
//
配置SRAM前需要刷新下
SDRAM控制器
//
配置SRAM前需要刷新下SDRAM控制器
do
{
do
{
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_SDRAM_Pos
);
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_SDRAM_Pos
);
...
@@ -49,5 +49,5 @@ void SRAM_Init(SRAM_InitStructure * initStruct)
...
@@ -49,5 +49,5 @@ void SRAM_Init(SRAM_InitStructure * initStruct)
SRAMC
->
CR
=
(
initStruct
->
ClkDiv
<<
SRAMC_CR_RWTIME_Pos
)
|
SRAMC
->
CR
=
(
initStruct
->
ClkDiv
<<
SRAMC_CR_RWTIME_Pos
)
|
(
initStruct
->
DataWidth
<<
SRAMC_CR_BYTEIF_Pos
)
|
(
initStruct
->
DataWidth
<<
SRAMC_CR_BYTEIF_Pos
)
|
(
0
<<
SRAMC_CR_HBLBDIS_Pos
);
//
使能字节
、半字访问
(
0
<<
SRAMC_CR_HBLBDIS_Pos
);
//
使能字节、半字访问
}
}
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sram.h
浏览文件 @
22513fe8
...
@@ -2,8 +2,8 @@
...
@@ -2,8 +2,8 @@
#define __SWM320_SRAM_H__
#define __SWM320_SRAM_H__
typedef
struct
{
typedef
struct
{
uint8_t
ClkDiv
;
//SRAM_CLKDIV_5...SRAM_CLKDIV_16
,根据SRAM芯片所能跑的最高频率选择合适分频
uint8_t
ClkDiv
;
//SRAM_CLKDIV_5...SRAM_CLKDIV_16
,根据SRAM芯片所能跑的最高频率选择合适分频
uint8_t
DataWidth
;
//SRAM_DATAWIDTH_8
、S
RAM_DATAWIDTH_16
uint8_t
DataWidth
;
//SRAM_DATAWIDTH_8
、S
RAM_DATAWIDTH_16
}
SRAM_InitStructure
;
}
SRAM_InitStructure
;
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
/******************************************************************************************************************************************
*
文
件名称: SWM320_timr.c
*
文件名称
: SWM320_timr.c
*
功能说明: SWM320单
片机的计数器/定时器功能驱动库
*
功能说明: SWM320单片机的计数器/定时器功能驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
注意事项
:
*
版本日期: V1.1.0 2017年
10月25日
*
版本日期: V1.1.0 2017年10月25日
*
升
级记录:
*
升级记录
:
*
*
*
*
*******************************************************************************************************************************************
*******************************************************************************************************************************************
...
@@ -23,20 +23,20 @@
...
@@ -23,20 +23,20 @@
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_Init()
*
函数名称
: TIMR_Init()
*
功能说明: TIMR
定时器/计数器初始化
*
功能说明: TIMR定时器/计数器初始化
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,有效值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,有效值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
* uint32_t mode TIMR_MODE_TIMER
定时器模式 TIMR_MODE_COUNTER
计数器模式
* uint32_t mode TIMR_MODE_TIMER
定时器模式 TIMR_MODE_COUNTER 计数器模式
* uint32_t period
定时
/计数周期
* uint32_t period
定时/计数周期
* uint32_t int_en
中断
使能
* uint32_t int_en
中断使能
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
TIMR_Init
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
mode
,
uint32_t
period
,
uint32_t
int_en
)
void
TIMR_Init
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
mode
,
uint32_t
period
,
uint32_t
int_en
)
{
{
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_TIMR_Pos
);
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_TIMR_Pos
);
TIMR_Stop
(
TIMRx
);
//
一些关键寄存器只能在
定时器停止时设置
TIMR_Stop
(
TIMRx
);
//
一些关键寄存器只能在定时器停止时设置
TIMRx
->
CTRL
&=
~
TIMR_CTRL_CLKSRC_Msk
;
TIMRx
->
CTRL
&=
~
TIMR_CTRL_CLKSRC_Msk
;
TIMRx
->
CTRL
|=
mode
<<
TIMR_CTRL_CLKSRC_Pos
;
TIMRx
->
CTRL
|=
mode
<<
TIMR_CTRL_CLKSRC_Pos
;
...
@@ -46,7 +46,7 @@ void TIMR_Init(TIMR_TypeDef * TIMRx, uint32_t mode, uint32_t period, uint32_t in
...
@@ -46,7 +46,7 @@ void TIMR_Init(TIMR_TypeDef * TIMRx, uint32_t mode, uint32_t period, uint32_t in
switch
((
uint32_t
)
TIMRx
)
switch
((
uint32_t
)
TIMRx
)
{
{
case
((
uint32_t
)
TIMR0
):
case
((
uint32_t
)
TIMR0
):
TIMRG
->
IF
=
(
1
<<
TIMRG_IF_TIMR0_Pos
);
//
使能中断前清
除中断标志
TIMRG
->
IF
=
(
1
<<
TIMRG_IF_TIMR0_Pos
);
//
使能中断前清除中断标志
TIMRG
->
IE
&=
~
TIMRG_IE_TIMR0_Msk
;
TIMRG
->
IE
&=
~
TIMRG_IE_TIMR0_Msk
;
TIMRG
->
IE
|=
(
int_en
<<
TIMRG_IE_TIMR0_Pos
);
TIMRG
->
IE
|=
(
int_en
<<
TIMRG_IE_TIMR0_Pos
);
...
@@ -96,11 +96,11 @@ void TIMR_Init(TIMR_TypeDef * TIMRx, uint32_t mode, uint32_t period, uint32_t in
...
@@ -96,11 +96,11 @@ void TIMR_Init(TIMR_TypeDef * TIMRx, uint32_t mode, uint32_t period, uint32_t in
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_Start()
*
函数名称
: TIMR_Start()
*
功能说明: 启动定时
器,从初始值开始计时/计数
*
功能说明: 启动定时器,从初始值开始计时/计数
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
TIMR_Start
(
TIMR_TypeDef
*
TIMRx
)
void
TIMR_Start
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -108,11 +108,11 @@ void TIMR_Start(TIMR_TypeDef * TIMRx)
...
@@ -108,11 +108,11 @@ void TIMR_Start(TIMR_TypeDef * TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_Stop()
*
函数名称
: TIMR_Stop()
*
功能说明:
停止定时器
*
功能说明: 停止定时器
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
TIMR_Stop
(
TIMR_TypeDef
*
TIMRx
)
void
TIMR_Stop
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -120,11 +120,11 @@ void TIMR_Stop(TIMR_TypeDef * TIMRx)
...
@@ -120,11 +120,11 @@ void TIMR_Stop(TIMR_TypeDef * TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_Halt()
*
函数名称
: TIMR_Halt()
*
功能说明: 暂
停定时器,计数值保持不变
*
功能说明: 暂停定时器,计数值保持不变
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
TIMR_Halt
(
TIMR_TypeDef
*
TIMRx
)
void
TIMR_Halt
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -157,11 +157,11 @@ void TIMR_Halt(TIMR_TypeDef * TIMRx)
...
@@ -157,11 +157,11 @@ void TIMR_Halt(TIMR_TypeDef * TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_Resume()
*
函数名称
: TIMR_Resume()
*
功能说明:
恢复定时器,从暂停处继续计数
*
功能说明: 恢复定时器,从暂停处继续计数
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
TIMR_Resume
(
TIMR_TypeDef
*
TIMRx
)
void
TIMR_Resume
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -194,12 +194,12 @@ void TIMR_Resume(TIMR_TypeDef * TIMRx)
...
@@ -194,12 +194,12 @@ void TIMR_Resume(TIMR_TypeDef * TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_SetPeriod()
*
函数名称
: TIMR_SetPeriod()
*
功能说明:
设置定时/计数周期
*
功能说明: 设置定时/计数周期
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
* uint32_t period
定时
/计数周期
* uint32_t period
定时/计数周期
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
TIMR_SetPeriod
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
period
)
void
TIMR_SetPeriod
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
period
)
{
{
...
@@ -207,11 +207,11 @@ void TIMR_SetPeriod(TIMR_TypeDef * TIMRx, uint32_t period)
...
@@ -207,11 +207,11 @@ void TIMR_SetPeriod(TIMR_TypeDef * TIMRx, uint32_t period)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_GetPeriod()
*
函数名称
: TIMR_GetPeriod()
*
功能说明:
获取定时/计数周期
*
功能说明: 获取定时/计数周期
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: uint32_t 当
前定时/计数周期
*
输 出: uint32_t 当前定时/计数周期
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
TIMR_GetPeriod
(
TIMR_TypeDef
*
TIMRx
)
uint32_t
TIMR_GetPeriod
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -219,11 +219,11 @@ uint32_t TIMR_GetPeriod(TIMR_TypeDef * TIMRx)
...
@@ -219,11 +219,11 @@ uint32_t TIMR_GetPeriod(TIMR_TypeDef * TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_GetCurValue()
*
函数名称
: TIMR_GetCurValue()
*
功能说明:
获取当前计数值
*
功能说明: 获取当前计数值
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: uint32_t
当前计数值
*
输 出: uint32_t 当前计数值
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
TIMR_GetCurValue
(
TIMR_TypeDef
*
TIMRx
)
uint32_t
TIMR_GetCurValue
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -231,11 +231,11 @@ uint32_t TIMR_GetCurValue(TIMR_TypeDef * TIMRx)
...
@@ -231,11 +231,11 @@ uint32_t TIMR_GetCurValue(TIMR_TypeDef * TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_INTEn()
*
函数名称
: TIMR_INTEn()
*
功能说明:
使能中断
*
功能说明: 使能中断
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
TIMR_INTEn
(
TIMR_TypeDef
*
TIMRx
)
void
TIMR_INTEn
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -274,11 +274,11 @@ void TIMR_INTEn(TIMR_TypeDef * TIMRx)
...
@@ -274,11 +274,11 @@ void TIMR_INTEn(TIMR_TypeDef * TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_INTDis()
*
函数名称
: TIMR_INTDis()
*
功能说明
: 禁能中断
*
功能说明: 禁能中断
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
TIMR_INTDis
(
TIMR_TypeDef
*
TIMRx
)
void
TIMR_INTDis
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -311,11 +311,11 @@ void TIMR_INTDis(TIMR_TypeDef * TIMRx)
...
@@ -311,11 +311,11 @@ void TIMR_INTDis(TIMR_TypeDef * TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_INTClr()
*
函数名称
: TIMR_INTClr()
*
功能说明:
清除中断标志
*
功能说明: 清除中断标志
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
TIMR_INTClr
(
TIMR_TypeDef
*
TIMRx
)
void
TIMR_INTClr
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -348,11 +348,11 @@ void TIMR_INTClr(TIMR_TypeDef * TIMRx)
...
@@ -348,11 +348,11 @@ void TIMR_INTClr(TIMR_TypeDef * TIMRx)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: TIMR_INTStat()
*
函数名称
: TIMR_INTStat()
*
功能说明: 获
取中断状态
*
功能说明: 获取中断状态
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: uint32_t 0 TIMRx未产生中断 1 T
IMRx产生了中断
*
输 出: uint32_t 0 TIMRx未产生中断 1 TIMRx产生了中断
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
TIMR_INTStat
(
TIMR_TypeDef
*
TIMRx
)
uint32_t
TIMR_INTStat
(
TIMR_TypeDef
*
TIMRx
)
{
{
...
@@ -382,32 +382,32 @@ uint32_t TIMR_INTStat(TIMR_TypeDef * TIMRx)
...
@@ -382,32 +382,32 @@ uint32_t TIMR_INTStat(TIMR_TypeDef * TIMRx)
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: Pulse_Init()
*
函数名称
: Pulse_Init()
*
功能说明:
脉宽测量功能初始化
*
功能说明: 脉宽测量功能初始化
*
输 入: uint32_t pulse PULSE_LOW 测量低脉冲宽度 PU
LSE_HIGH 测量高脉冲宽度
*
输 入: uint32_t pulse PULSE_LOW 测量低脉冲宽度 PULSE_HIGH 测量高脉冲宽度
* uint32_t int_en
是否使
能脉冲测量完成中断
* uint32_t int_en
是否使能脉冲测量完成中断
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
Pulse_Init
(
uint32_t
pulse
,
uint32_t
int_en
)
void
Pulse_Init
(
uint32_t
pulse
,
uint32_t
int_en
)
{
{
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_TIMR_Pos
);
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_TIMR_Pos
);
TIMRG
->
PCTRL
=
(
0
<<
TIMRG_PCTRL_CLKSRC_Pos
)
|
//
系统时钟作为
时钟源
TIMRG
->
PCTRL
=
(
0
<<
TIMRG_PCTRL_CLKSRC_Pos
)
|
//
系统时钟作为时钟源
(
pulse
<<
TIMRG_PCTRL_HIGH_Pos
)
|
(
pulse
<<
TIMRG_PCTRL_HIGH_Pos
)
|
(
0
<<
TIMRG_PCTRL_EN_Pos
);
(
0
<<
TIMRG_PCTRL_EN_Pos
);
TIMRG
->
IE
|=
(
1
<<
TIMRG_IE_PULSE_Pos
);
//
使能才能查询中
断标志
TIMRG
->
IE
|=
(
1
<<
TIMRG_IE_PULSE_Pos
);
//
使能才能查询中断标志
if
(
int_en
)
NVIC_EnableIRQ
(
PULSE_IRQn
);
if
(
int_en
)
NVIC_EnableIRQ
(
PULSE_IRQn
);
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: Pulse_Start()
*
函数名称
: Pulse_Start()
*
功能说明:
脉宽测量功能启动,测量到脉宽后会自动关闭测量功能
*
功能说明: 脉宽测量功能启动,测量到脉宽后会自动关闭测量功能
*
输 入
: 无
*
输 入: 无
*
输 出
: 无
*
输 出: 无
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
void
Pulse_Start
(
void
)
void
Pulse_Start
(
void
)
{
{
...
@@ -415,17 +415,17 @@ void Pulse_Start(void)
...
@@ -415,17 +415,17 @@ void Pulse_Start(void)
}
}
/******************************************************************************************************************************************
/******************************************************************************************************************************************
* 函数名称: Pulse_Done()
*
函数名称
: Pulse_Done()
*
功能说明
: 脉宽测量是否完成
*
功能说明: 脉宽测量是否完成
*
输 入
: 无
*
输 入: 无
*
输 出: uint32_t 1 测量已完成
0 测量未完成
*
输 出: uint32_t 1 测量已完成 0 测量未完成
*
注意事
项: 无
*
注意事项: 无
******************************************************************************************************************************************/
******************************************************************************************************************************************/
uint32_t
Pulse_Done
(
void
)
uint32_t
Pulse_Done
(
void
)
{
{
if
(
TIMRG
->
IF
&
TIMRG_IF_PULSE_Msk
)
if
(
TIMRG
->
IF
&
TIMRG_IF_PULSE_Msk
)
{
{
TIMRG
->
IF
=
TIMRG_IF_PULSE_Msk
;
//
清除中
断标志
TIMRG
->
IF
=
TIMRG_IF_PULSE_Msk
;
//
清除中断标志
return
1
;
return
1
;
}
}
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.h
浏览文件 @
22513fe8
...
@@ -4,20 +4,20 @@
...
@@ -4,20 +4,20 @@
#define TIMR_MODE_TIMER 0
#define TIMR_MODE_TIMER 0
#define TIMR_MODE_COUNTER 1
#define TIMR_MODE_COUNTER 1
void
TIMR_Init
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
mode
,
uint32_t
period
,
uint32_t
int_en
);
//
定时器/计数器初始化
void
TIMR_Init
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
mode
,
uint32_t
period
,
uint32_t
int_en
);
//
定时器/计数器初始化
void
TIMR_Start
(
TIMR_TypeDef
*
TIMRx
);
//
启动定时器,从初始值开始计时/计数
void
TIMR_Start
(
TIMR_TypeDef
*
TIMRx
);
//
启动定时器,从初始值开始计时/计数
void
TIMR_Stop
(
TIMR_TypeDef
*
TIMRx
);
//
停止定时器
void
TIMR_Stop
(
TIMR_TypeDef
*
TIMRx
);
//
停止定时器
void
TIMR_Halt
(
TIMR_TypeDef
*
TIMRx
);
//
暂停定时器,计数值保持不变
void
TIMR_Halt
(
TIMR_TypeDef
*
TIMRx
);
//
暂停定时器,计数值保持不变
void
TIMR_Resume
(
TIMR_TypeDef
*
TIMRx
);
//
恢复定时器,从暂停处继续计数
void
TIMR_Resume
(
TIMR_TypeDef
*
TIMRx
);
//
恢复定时器,从暂停处继续计数
void
TIMR_SetPeriod
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
period
);
//
设置定时/计数周期
void
TIMR_SetPeriod
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
period
);
//
设置定时/计数周期
uint32_t
TIMR_GetPeriod
(
TIMR_TypeDef
*
TIMRx
);
//
获取定时/计数周期
uint32_t
TIMR_GetPeriod
(
TIMR_TypeDef
*
TIMRx
);
//
获取定时/计数周期
uint32_t
TIMR_GetCurValue
(
TIMR_TypeDef
*
TIMRx
);
//
获取当前计数值
uint32_t
TIMR_GetCurValue
(
TIMR_TypeDef
*
TIMRx
);
//
获取当前计数值
void
TIMR_INTEn
(
TIMR_TypeDef
*
TIMRx
);
//
使能中断
void
TIMR_INTEn
(
TIMR_TypeDef
*
TIMRx
);
//
使能中断
void
TIMR_INTDis
(
TIMR_TypeDef
*
TIMRx
);
//
禁能中断
void
TIMR_INTDis
(
TIMR_TypeDef
*
TIMRx
);
//
禁能中断
void
TIMR_INTClr
(
TIMR_TypeDef
*
TIMRx
);
//
清除中断标志
void
TIMR_INTClr
(
TIMR_TypeDef
*
TIMRx
);
//
清除中断标志
uint32_t
TIMR_INTStat
(
TIMR_TypeDef
*
TIMRx
);
//
获取中断状态
uint32_t
TIMR_INTStat
(
TIMR_TypeDef
*
TIMRx
);
//
获取中断状态
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.c
浏览文件 @
22513fe8
此差异已折叠。
点击以展开。
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.h
浏览文件 @
22513fe8
...
@@ -4,20 +4,20 @@
...
@@ -4,20 +4,20 @@
typedef
struct
{
typedef
struct
{
uint32_t
Baudrate
;
uint32_t
Baudrate
;
uint8_t
DataBits
;
//
数据位位数,可取值UART_DATA_8BIT、U
ART_DATA_9BIT
uint8_t
DataBits
;
//
数据位位数,可取值UART_DATA_8BIT、UART_
DATA_9BIT
uint8_t
Parity
;
//
奇偶校验位,可取值UART_PARITY_NONE、UART_PARITY_ODD、UART_PARITY_EVEN、UART_PARITY_ONE、U
ART_PARITY_ZERO
uint8_t
Parity
;
//
奇偶校验位,可取值UART_PARITY_NONE、UART_PARITY_ODD、UART_PARITY_EVEN、UART_PARITY_ONE、UART_
PARITY_ZERO
uint8_t
StopBits
;
//
停止位位数,可取值UART_STOP_1BIT、U
ART_STOP_2BIT
uint8_t
StopBits
;
//
停止位位数,可取值UART_STOP_1BIT、UART_
STOP_2BIT
uint8_t
RXThreshold
;
//
取值0
--7
uint8_t
RXThreshold
;
//
取值
0--7
uint8_t
RXThresholdIEn
;
//
当RX FIFO中数据个数 > RXThreshold时触发中断
uint8_t
RXThresholdIEn
;
//
当RX FIFO中数据个数 > RXThreshold时触发中断
uint8_t
TXThreshold
;
//
取值0
--7
uint8_t
TXThreshold
;
//
取值
0--7
uint8_t
TXThresholdIEn
;
//
当TX FIFO中数据个数 <= TXThreshold时触发中断
uint8_t
TXThresholdIEn
;
//
当TX FIFO中数据个数 <= TXThreshold时触发中断
uint8_t
TimeoutTime
;
//
超时时长 = TimeoutTime/(Baudrate/10) 秒
uint8_t
TimeoutTime
;
//
超时时长 = TimeoutTime/(Baudrate/10) 秒
uint8_t
TimeoutIEn
;
//
超时中断,RX FIFO非空,且超过 TimeoutTime/(Baudrate/10) 秒没有在RX线上接收到数据时触发中断
uint8_t
TimeoutIEn
;
//
超时中断,RX FIFO非空,且超过 TimeoutTime/(Baudrate/10) 秒没有在RX线上接收到数据时触发中断
}
UART_InitStructure
;
}
UART_InitStructure
;
...
@@ -46,20 +46,20 @@ typedef struct {
...
@@ -46,20 +46,20 @@ typedef struct {
#define UART_ERR_NOISE 3
#define UART_ERR_NOISE 3
void
UART_Init
(
UART_TypeDef
*
UARTx
,
UART_InitStructure
*
initStruct
);
//UART
串口初始化
void
UART_Init
(
UART_TypeDef
*
UARTx
,
UART_InitStructure
*
initStruct
);
//UART
串口初始化
void
UART_Open
(
UART_TypeDef
*
UARTx
);
void
UART_Open
(
UART_TypeDef
*
UARTx
);
void
UART_Close
(
UART_TypeDef
*
UARTx
);
void
UART_Close
(
UART_TypeDef
*
UARTx
);
void
UART_WriteByte
(
UART_TypeDef
*
UARTx
,
uint32_t
data
);
//
发送一个字节数据
void
UART_WriteByte
(
UART_TypeDef
*
UARTx
,
uint32_t
data
);
//
发送一个字节数据
uint32_t
UART_ReadByte
(
UART_TypeDef
*
UARTx
,
uint32_t
*
data
);
//
读取一个字节数据,并指出数据是否V
alid
uint32_t
UART_ReadByte
(
UART_TypeDef
*
UARTx
,
uint32_t
*
data
);
//
读取一个字节数据,并指出数据是否Valid
uint32_t
UART_IsTXBusy
(
UART_TypeDef
*
UARTx
);
uint32_t
UART_IsTXBusy
(
UART_TypeDef
*
UARTx
);
uint32_t
UART_IsRXFIFOEmpty
(
UART_TypeDef
*
UARTx
);
//
接收FIFO是否空,如果不空则可以继续U
ART_ReadByte()
uint32_t
UART_IsRXFIFOEmpty
(
UART_TypeDef
*
UARTx
);
//
接收FIFO是否空,如果不空则可以继续UART_Rea
dByte()
uint32_t
UART_IsTXFIFOFull
(
UART_TypeDef
*
UARTx
);
//
发送FIFO是否满,如果不满则可以继续U
ART_WriteByte()
uint32_t
UART_IsTXFIFOFull
(
UART_TypeDef
*
UARTx
);
//
发送FIFO是否满,如果不满则可以继续UART_Wr
iteByte()
void
UART_SetBaudrate
(
UART_TypeDef
*
UARTx
,
uint32_t
baudrate
);
//
设置波特率
void
UART_SetBaudrate
(
UART_TypeDef
*
UARTx
,
uint32_t
baudrate
);
//
设置波特率
uint32_t
UART_GetBaudrate
(
UART_TypeDef
*
UARTx
);
//
获取当前使用的波特率
uint32_t
UART_GetBaudrate
(
UART_TypeDef
*
UARTx
);
//
获取当前使用的波特率
void
UART_CTSConfig
(
UART_TypeDef
*
UARTx
,
uint32_t
enable
,
uint32_t
polarity
);
void
UART_CTSConfig
(
UART_TypeDef
*
UARTx
,
uint32_t
enable
,
uint32_t
polarity
);
uint32_t
UART_CTSLineState
(
UART_TypeDef
*
UARTx
);
uint32_t
UART_CTSLineState
(
UART_TypeDef
*
UARTx
);
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.c
浏览文件 @
22513fe8
此差异已折叠。
点击以展开。
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.h
浏览文件 @
22513fe8
...
@@ -4,16 +4,16 @@
...
@@ -4,16 +4,16 @@
#define WDT_MODE_RESET 0
#define WDT_MODE_RESET 0
#define WDT_MODE_INTERRUPT 1
#define WDT_MODE_INTERRUPT 1
void
WDT_Init
(
WDT_TypeDef
*
WDTx
,
uint32_t
peroid
,
uint32_t
mode
);
//WDT
看门狗初始化
void
WDT_Init
(
WDT_TypeDef
*
WDTx
,
uint32_t
peroid
,
uint32_t
mode
);
//WDT
看门狗初始化
void
WDT_Start
(
WDT_TypeDef
*
WDTx
);
//
启动指定WDT,开始倒计时
void
WDT_Start
(
WDT_TypeDef
*
WDTx
);
//
启动指定WDT,开始倒计时
void
WDT_Stop
(
WDT_TypeDef
*
WDTx
);
//
关闭指定WDT,停止倒计时
void
WDT_Stop
(
WDT_TypeDef
*
WDTx
);
//
关闭指定WDT,停止倒计时
void
WDT_Feed
(
WDT_TypeDef
*
WDTx
);
//
喂狗,重新从装载值开始倒计时
void
WDT_Feed
(
WDT_TypeDef
*
WDTx
);
//
喂狗,重新从装载值开始倒计时
int32_t
WDT_GetValue
(
WDT_TypeDef
*
WDTx
);
//
获取指定看门狗定时器的当前倒计时值
int32_t
WDT_GetValue
(
WDT_TypeDef
*
WDTx
);
//
获取指定看门狗定时器的当前倒计时值
void
WDT_INTClr
(
WDT_TypeDef
*
WDTx
);
//
中断标志清除
void
WDT_INTClr
(
WDT_TypeDef
*
WDTx
);
//
中断标志清除
uint32_t
WDT_INTStat
(
WDT_TypeDef
*
WDTx
);
//
中断状态查询
uint32_t
WDT_INTStat
(
WDT_TypeDef
*
WDTx
);
//
中断状态查询
#endif //__SWM320_WDT_H__
#endif //__SWM320_WDT_H__
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录