Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
人间散章
rt-thread
提交
22513fe8
R
rt-thread
项目概览
人间散章
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
Fork
0
代码
文件
提交
分支
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
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文件名称
: system_SWM320.c
*
功能说明: SWM320单片机的时钟设置
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录:
/******************************************************************************************************************************************
*
文
件名称: system_SWM320.c
*
功能说明: SWM32
0单片机的时钟设置
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升级记
录:
*
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
*******************************************************************************************************************************************/
#include <stdint.h>
#include "SWM320.h"
/******************************************************************************************************************************************
*
系统时钟设定
*
系统时钟
设定
*****************************************************************************************************************************************/
#define SYS_CLK_20MHz
0 //0 内部高频20MHz RC振荡器
#define SYS_CLK_40MHz
1 //1 内部高频40MHz RC振荡器
#define SYS_CLK_32KHz
2 //2 内部低频32KHz RC振荡器
#define SYS_CLK_XTAL
3 //3 外部晶体振荡器(2-30MHz)
#define SYS_CLK_PLL
4 //4 片内锁相环输出
#define SYS_CLK_20MHz
0 //0 内部高频20MHz
RC振荡器
#define SYS_CLK_40MHz
1 //1 内部高频40MHz
RC振荡器
#define SYS_CLK_32KHz
2 //2 内部低频32KHz
RC振荡器
#define SYS_CLK_XTAL
3 //3 外部晶体振荡器(
2-30MHz)
#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 __LSI (32000UL) //低速内部时钟
#define __HSE (20000000UL) //高速外部时钟
#define SYS_CLK_DIV SYS_CLK_DIV_1
/********************************** 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
#define PLL_OUT_DIV4 1
#define PLL_OUT_DIV2 2
/********************************** 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_
OUT_DIV PLL_OUT_DIV8
#define PLL_
IN_DIV 5
uint32_t
SystemCoreClock
=
__HSI
;
//System Clock Frequency (Core Clock)
uint32_t
CyclesPerUs
=
(
__HSI
/
1000000
);
//Cycles per micro second
#define PLL_FB_DIV 60
/******************************************************************************************************************************************
* 函数名称:
* 功能说明: 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
));
}
else
//LFCK <= LRC
{
SystemCoreClock
=
__LSI
;
}
}
#define PLL_OUT_DIV8 0
#define PLL_OUT_DIV4 1
#define PLL_OUT_DIV2 2
if
(
SYS
->
CLKDIV
&
SYS_CLKDIV_SYS_Msk
)
SystemCoreClock
/=
2
;
#define PLL_OUT_DIV PLL_OUT_DIV8
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振荡器
switchCLK_40MHz
();
break
;
uint32_t
SystemCoreClock
=
__HSI
;
//System Clock Frequency (Core Clock)
uint32_t
CyclesPerUs
=
(
__HSI
/
1000000
);
//Cycles per micro second
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
);
/******************************************************************************************************************************************
* 函数名称:
* 功能说明: 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
));
}
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
)
{
uint32_t
i
;
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
(
0
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 20MHz
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_HFCK_Msk
;
//HFCK <= HRC
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
uint32_t
i
;
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
(
0
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 20MHz
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_HFCK_Msk
;
//HFCK <= HRC
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
}
void
switchCLK_40MHz
(
void
)
{
uint32_t
i
;
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
(
1
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 40MHz
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_HFCK_Msk
;
//HFCK <= HRC
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
uint32_t
i
;
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
(
1
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 40MHz
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_HFCK_Msk
;
//HFCK <= HRC
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
}
void
switchCLK_32KHz
(
void
)
{
uint32_t
i
;
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_RTCBKP_Pos
);
SYS
->
LRCCR
&=
~
(
1
<<
SYS_LRCCR_OFF_Pos
);
for
(
i
=
0
;
i
<
100
;
i
++
)
__NOP
();
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_LFCK_Msk
;
//LFCK <= LRC
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_SYS_Msk
;
//SYS_CLK <= LFCK
uint32_t
i
;
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_RTCBKP_Pos
);
SYS
->
LRCCR
&=
~
(
1
<<
SYS_LRCCR_OFF_Pos
);
for
(
i
=
0
;
i
<
100
;
i
++
)
__NOP
();
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_LFCK_Msk
;
//LFCK <= LRC
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_SYS_Msk
;
//SYS_CLK <= LFCK
}
void
switchCLK_XTAL
(
void
)
{
uint32_t
i
;
SYS
->
XTALCR
=
(
1
<<
SYS_XTALCR_EN_Pos
);
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_HFCK_Pos
);
//HFCK <= XTAL
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
uint32_t
i
;
SYS
->
XTALCR
=
(
1
<<
SYS_XTALCR_EN_Pos
);
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_HFCK_Pos
);
//HFCK <= XTAL
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_SYS_Pos
);
//SYS_CLK <= HFCK
}
void
switchCLK_PLL
(
void
)
{
uint32_t
i
;
PLLInit
();
SYS
->
PLLCR
|=
(
1
<<
SYS_PLLCR_OUTEN_Pos
);
for
(
i
=
0
;
i
<
10000
;
i
++
)
__NOP
();
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_LFCK_Pos
);
//LFCK <= PLL
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_SYS_Msk
;
//SYS_CLK <= LFCK
uint32_t
i
;
PLLInit
();
SYS
->
PLLCR
|=
(
1
<<
SYS_PLLCR_OUTEN_Pos
);
for
(
i
=
0
;
i
<
10000
;
i
++
)
__NOP
();
SYS
->
CLKSEL
|=
(
1
<<
SYS_CLKSEL_LFCK_Pos
);
//LFCK <= PLL
SYS
->
CLKSEL
&=
~
SYS_CLKSEL_SYS_Msk
;
//SYS_CLK <= LFCK
}
void
PLLInit
(
void
)
{
uint32_t
i
;
if
(
SYS_PLL_SRC
==
SYS_CLK_20MHz
)
{
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
(
0
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 20MHz
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
SYS
->
PLLCR
|=
(
1
<<
SYS_PLLCR_INSEL_Pos
);
//PLL_SRC <= HRC
}
else
if
(
SYS_PLL_SRC
==
SYS_CLK_XTAL
)
{
SYS
->
XTALCR
=
(
1
<<
SYS_XTALCR_EN_Pos
);
for
(
i
=
0
;
i
<
20000
;
i
++
)
;
SYS
->
PLLCR
&=
~
(
1
<<
SYS_PLLCR_INSEL_Pos
);
//PLL_SRC <= XTAL
}
SYS
->
PLLDIV
&=
~
(
SYS_PLLDIV_INDIV_Msk
|
SYS_PLLDIV_FBDIV_Msk
|
SYS_PLLDIV_OUTDIV_Msk
);
SYS
->
PLLDIV
|=
(
PLL_IN_DIV
<<
SYS_PLLDIV_INDIV_Pos
)
|
(
PLL_FB_DIV
<<
SYS_PLLDIV_FBDIV_Pos
)
|
(
PLL_OUT_DIV
<<
SYS_PLLDIV_OUTDIV_Pos
);
SYS
->
PLLCR
&=
~
(
1
<<
SYS_PLLCR_OFF_Pos
);
while
(
SYS
->
PLLLOCK
==
0
)
;
//等待PLL锁定
uint32_t
i
;
if
(
SYS_PLL_SRC
==
SYS_CLK_20MHz
)
{
SYS
->
HRCCR
=
(
0
<<
SYS_HRCCR_OFF_Pos
)
|
(
0
<<
SYS_HRCCR_DBL_Pos
);
//HRC = 20MHz
for
(
i
=
0
;
i
<
1000
;
i
++
)
__NOP
();
SYS
->
PLLCR
|=
(
1
<<
SYS_PLLCR_INSEL_Pos
);
//PLL_SRC <= HRC
}
else
if
(
SYS_PLL_SRC
==
SYS_CLK_XTAL
)
{
SYS
->
XTALCR
=
(
1
<<
SYS_XTALCR_EN_Pos
);
for
(
i
=
0
;
i
<
20000
;
i
++
);
SYS
->
PLLCR
&=
~
(
1
<<
SYS_PLLCR_INSEL_Pos
);
//PLL_SRC <= XTAL
}
SYS
->
PLLDIV
&=
~
(
SYS_PLLDIV_INDIV_Msk
|
SYS_PLLDIV_FBDIV_Msk
|
SYS_PLLDIV_OUTDIV_Msk
);
SYS
->
PLLDIV
|=
(
PLL_IN_DIV
<<
SYS_PLLDIV_INDIV_Pos
)
|
(
PLL_FB_DIV
<<
SYS_PLLDIV_FBDIV_Pos
)
|
(
PLL_OUT_DIV
<<
SYS_PLLDIV_OUTDIV_Pos
);
SYS
->
PLLCR
&=
~
(
1
<<
SYS_PLLCR_OFF_Pos
);
while
(
SYS
->
PLLLOCK
==
0
);
//等待PLL锁定
}
bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.h
浏览文件 @
22513fe8
...
...
@@ -2,24 +2,28 @@
#define __SYSTEM_SWM320_H__
#ifdef __cplusplus
extern
"C"
{
extern
"C"
{
#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
switchCLK_40MHz
(
void
);
extern
void
switchCLK_32KHz
(
void
);
extern
void
switchCLK_XTAL
(
void
);
extern
void
switchCLK_PLL
(
void
);
extern
void
SystemInit
(
void
);
extern
void
SystemCoreClockUpdate
(
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
}
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_adc.c
*
功能说明: SWM320单片机
的ADC数模转换器功能驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_adc.c
*
功能说明: SWM320单片机的ADC数模转换器功能驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*******************************************************************************************************************************************
* @attention
*
...
...
@@ -21,12 +21,12 @@
/******************************************************************************************************************************************
* 函数名称: ADC_Init()
*
功能说明: ADC
模数转换器初始化
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC
,有效值包括ADC0、ADC1
* ADC_InitStructure * initStruct
包含ADC各相
关定值的结构体
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_Init()
*
功能说明: ADC模数转换器初始化
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,有效值包括ADC0、
ADC1
* ADC_InitStructure * initStruct
包含ADC各相关定值的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_Init
(
ADC_TypeDef
*
ADCx
,
ADC_InitStructure
*
initStruct
)
{
...
...
@@ -41,7 +41,7 @@ void ADC_Init(ADC_TypeDef * ADCx, ADC_InitStructure * initStruct)
break
;
}
ADC_Close
(
ADCx
);
//
一些关键寄存器只能在
ADC关闭时设置
ADC_Close
(
ADCx
);
//
一些关键寄存器只能在ADC关闭时设置
if
(
initStruct
->
clk_src
==
ADC_CLKSRC_HRC
)
{
...
...
@@ -80,7 +80,7 @@ void ADC_Init(ADC_TypeDef * ADCx, ADC_InitStructure * initStruct)
(
initStruct
->
trig_src
<<
ADC_CTRL_TRIG_Pos
)
|
(
initStruct
->
Continue
<<
ADC_CTRL_CONT_Pos
);
ADCx
->
IF
=
0xFFFFFFFF
;
//
清除中
断标志
ADCx
->
IF
=
0xFFFFFFFF
;
//
清除中断标志
ADCx
->
IE
&=
~
(
ADC_IE_CH0EOC_Msk
|
ADC_IE_CH1EOC_Msk
|
ADC_IE_CH2EOC_Msk
|
ADC_IE_CH3EOC_Msk
|
ADC_IE_CH4EOC_Msk
|
ADC_IE_CH5EOC_Msk
|
ADC_IE_CH6EOC_Msk
|
ADC_IE_CH7EOC_Msk
);
...
...
@@ -153,11 +153,11 @@ void ADC_Init(ADC_TypeDef * ADCx, ADC_InitStructure * initStruct)
}
/******************************************************************************************************************************************
* 函数名称: ADC_Open()
*
功能说明: ADC开启
,可以软件启动、或硬件触发ADC转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_Open()
*
功能说明: ADC开启,可以软件启动、或硬件触发ADC转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_Open
(
ADC_TypeDef
*
ADCx
)
{
...
...
@@ -165,11 +165,11 @@ void ADC_Open(ADC_TypeDef * ADCx)
}
/******************************************************************************************************************************************
* 函数名称: ADC_Close()
*
功能说明: ADC关闭,无法
软件启动、或硬件触发ADC转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_Close()
*
功能说明: ADC关闭,无法软件启动、或硬件触发ADC转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_Close
(
ADC_TypeDef
*
ADCx
)
{
...
...
@@ -177,11 +177,11 @@ void ADC_Close(ADC_TypeDef * ADCx)
}
/******************************************************************************************************************************************
* 函数名称: ADC_Start()
*
功能说明: 软件触
发模式下启动ADC转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_Start()
*
功能说明: 软件触发模式下启动ADC转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_Start
(
ADC_TypeDef
*
ADCx
)
{
...
...
@@ -189,11 +189,11 @@ void ADC_Start(ADC_TypeDef * ADCx)
}
/******************************************************************************************************************************************
* 函数名称: ADC_Stop()
*
功能说明: 软件触发模
式下停止ADC转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_Stop()
*
功能说明: 软件触发模式下停止ADC转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_Stop
(
ADC_TypeDef
*
ADCx
)
{
...
...
@@ -220,12 +220,12 @@ static uint32_t chn2idx(uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_Read()
*
功能说明: 从
指定通道读取转换结果
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要读取转换结果的通道,有效值ADC_CH0、ADC_CH
1、... ... 、ADC_CH7
*
输 出: uint32_t
读取到的转换结果
*
注意事
项: 无
*
函数名称
: ADC_Read()
*
功能说明: 从指定通道读取转换结果
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要读取转换结果的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: uint32_t 读取到的转换结果
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
ADC_Read
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -234,18 +234,18 @@ uint32_t ADC_Read(ADC_TypeDef * ADCx, uint32_t chn)
dat
=
ADCx
->
CH
[
idx
].
DATA
;
ADCx
->
CH
[
idx
].
STAT
=
0x01
;
//
清除EO
C标志
ADCx
->
CH
[
idx
].
STAT
=
0x01
;
//
清除EOC标志
return
dat
;
}
/******************************************************************************************************************************************
* 函数名称: ADC_IsEOC()
*
功能说明:
指定通道是否End Of Conversion
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要查询状态的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换
0 该通道未完成转换
*
注意事
项: 无
*
函数名称
: ADC_IsEOC()
*
功能说明: 指定通道是否
End Of Conversion
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要查询状态的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
ADC_IsEOC
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -255,12 +255,12 @@ uint32_t ADC_IsEOC(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_ChnSelect()
*
功能说明: ADC通道选通,模数
转换会在选通的通道上依次采样转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chns
要选通的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC
_CH7及其组合(即“按位或”运算)
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_ChnSelect()
*
功能说明: ADC通道选通,模数转换会在选通的通道上依次采样转换
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chns
要选通的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_ChnSelect
(
ADC_TypeDef
*
ADCx
,
uint32_t
chns
)
{
...
...
@@ -270,12 +270,12 @@ void ADC_ChnSelect(ADC_TypeDef * ADCx, uint32_t chns)
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCEn()
*
功能说明:
转换完成中断使能
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntEOCEn()
*
功能说明: 转换完成中断使能
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntEOCEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -285,12 +285,12 @@ void ADC_IntEOCEn(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCDis()
*
功能说明: 转
换完成中断禁止
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntEOCDis()
*
功能说明: 转换完成中断禁止
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntEOCDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -300,12 +300,12 @@ void ADC_IntEOCDis(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCClr()
*
功能说明: 转
换完成中断标志清除
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntEOCClr()
*
功能说明: 转换完成中断标志清除
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntEOCClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -315,12 +315,12 @@ void ADC_IntEOCClr(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntEOCStat()
*
功能说明: 转
换完成中断状态
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要查询的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换
0 该通道未完成转换
*
注意事
项: 无
*
函数名称
: ADC_IntEOCStat()
*
功能说明: 转换完成中断状态
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
ADC_IntEOCStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -330,12 +330,12 @@ uint32_t ADC_IntEOCStat(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFEn()
*
功能说明:
数据溢出中断使能
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntOVFEn()
*
功能说明: 数据溢出中断使能
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntOVFEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -345,12 +345,12 @@ void ADC_IntOVFEn(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFDis()
*
功能说明:
数据溢出中断禁止
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntOVFDis()
*
功能说明: 数据溢出中断禁止
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntOVFDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -360,12 +360,12 @@ void ADC_IntOVFDis(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFClr()
*
功能说明:
数据溢出中断标志清除
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntOVFClr()
*
功能说明: 数据溢出中断标志清除
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntOVFClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -375,12 +375,12 @@ void ADC_IntOVFClr(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntOVFStat()
*
功能说明:
数据溢出中断状态
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要查询的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换
0 该通道未完成转换
*
注意事
项: 无
*
函数名称
: ADC_IntOVFStat()
*
功能说明: 数据溢出中断状态
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
ADC_IntOVFStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -390,12 +390,12 @@ uint32_t ADC_IntOVFStat(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLEn()
*
功能说明: FIF
O半满中断使能
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntHFULLEn()
*
功能说明: FIFO半满中断使能
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntHFULLEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -405,12 +405,12 @@ void ADC_IntHFULLEn(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLDis()
*
功能说明: FIFO
半满中断禁止
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntHFULLDis()
*
功能说明: FIFO半满中断禁止
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntHFULLDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -420,12 +420,12 @@ void ADC_IntHFULLDis(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLClr()
*
功能说明: FIFO
半满中断标志清除
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntHFULLClr()
*
功能说明: FIFO半满中断标志清除
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntHFULLClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -435,12 +435,12 @@ void ADC_IntHFULLClr(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntHFULLStat()
*
功能说明: FIFO
半满中断状态
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要查询的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换
0 该通道未完成转换
*
注意事
项: 无
*
函数名称
: ADC_IntHFULLStat()
*
功能说明: FIFO半满中断状态
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
ADC_IntHFULLStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -450,12 +450,12 @@ uint32_t ADC_IntHFULLStat(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLEn()
*
功能说明: FIF
O满中断使能
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntFULLEn()
*
功能说明: FIFO满中断使能
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntFULLEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -465,12 +465,12 @@ void ADC_IntFULLEn(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLDis()
*
功能说明: FIFO
满中断禁止
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntFULLDis()
*
功能说明: FIFO满中断禁止
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntFULLDis
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -480,12 +480,12 @@ void ADC_IntFULLDis(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLClr()
*
功能说明: FIFO
满中断标志清除
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: ADC_IntFULLClr()
*
功能说明: FIFO满中断标志清除
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
ADC_IntFULLClr
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
@@ -495,12 +495,12 @@ void ADC_IntFULLClr(ADC_TypeDef * ADCx, uint32_t chn)
}
/******************************************************************************************************************************************
* 函数名称: ADC_IntFULLStat()
*
功能说明: FIFO
满中断状态
*
输 入: ADC_TypeDef * ADCx 指定要被设置
的ADC,可取值包括ADC
* uint32_t chn
要查询的通道,有效值ADC_CH0、ADC_CH1、.
.. ... 、ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换
0 该通道未完成转换
*
注意事
项: 无
*
函数名称
: ADC_IntFULLStat()
*
功能说明: FIFO满中断状态
*
输 入: ADC_TypeDef * ADCx 指定要被设置的ADC,可取值包括
ADC
* uint32_t chn
要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、
ADC_CH7
*
输 出: uint32_t 1 该通道完成了转换 0 该通道未完成转换
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
ADC_IntFULLStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.h
浏览文件 @
22513fe8
...
...
@@ -2,18 +2,18 @@
#define __SWM320_ADC_H__
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_div
;
//ADC
转换时钟分频,取值1
--31
uint8_t
pga_ref
;
//PGA
基准:PGA_REF_INTERNAL、P
GA_REF_EXTERNAL
uint8_t
channels
;
//ADC
转换通道选中,ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
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
Continue
;
//
在软件触发模式下:1 连续转换模式,启动后一直采样、转换,直到软件清除START位
// 0
单次转换模式,转换完成后START位自动清除停止转换
uint8_t
EOC_IEn
;
//EOC
中断使能,可针对每个通道设置,其有效值为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
FULL_IEn
;
//FIFO
满中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
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--3
1
uint8_t
pga_ref
;
//PGA
基准:PGA_REF_INTERNAL、PG
A_REF_EXTERNAL
uint8_t
channels
;
//ADC
转换通道选中,ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
uint8_t
samplAvg
;
//
采样取平均,触发启动ADC转换后,ADC在一个通道上连续采样、转换多次,并将它们的平均值作为该通道转换结果
uint8_t
trig_src
;
//ADC
触发方式:ADC_TRIGSRC_SW、ADC_TRIGSRC_PWM、ADC_TRIGSRC_TIMR2、ADC
_TRIGSRC_TIMR3
uint8_t
Continue
;
//
在软件触发模式下:1 连续转换模式,启动后一直采样、转换,直到软件清除START位
// 0
单次转换模式,转换完成后START位自动清除停止转换
uint8_t
EOC_IEn
;
//EOC
中断使能,可针对每个通道设置,其有效值为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
FULL_IEn
;
//FIFO
满中断使能,可针对每个通道设置,其有效值为ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
}
ADC_InitStructure
;
#define ADC_CH0 0x01
...
...
@@ -31,49 +31,49 @@ typedef struct {
#define ADC_CLKSRC_VCO_DIV64 4
#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_SAMPLE8 7
#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 PGA_REF_INTERNAL 1 //PGA
输入共模电平由内部电路产生,ADC_REFP和ADC_REFN可悬空
#define PGA_REF_EXTERNAL 0 //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) 电平值须与量程相同
void
ADC_Init
(
ADC_TypeDef
*
ADCx
,
ADC_InitStructure
*
initStruct
);
//ADC
模数转换器初始化
void
ADC_Open
(
ADC_TypeDef
*
ADCx
);
//ADC
开启,可以软件启动、或硬件触发ADC转换
void
ADC_Close
(
ADC_TypeDef
*
ADCx
);
//ADC
关闭,无法软件启动、或硬件触发ADC转换
void
ADC_Start
(
ADC_TypeDef
*
ADCx
);
//
启动指定ADC,开始模数转换
void
ADC_Stop
(
ADC_TypeDef
*
ADCx
);
//
关闭指定ADC,停止模数转换
void
ADC_Init
(
ADC_TypeDef
*
ADCx
,
ADC_InitStructure
*
initStruct
);
//ADC
模数转换器初始化
void
ADC_Open
(
ADC_TypeDef
*
ADCx
);
//ADC
开启,可以软件启动、或硬件触发ADC转换
void
ADC_Close
(
ADC_TypeDef
*
ADCx
);
//ADC
关闭,无法软件启动、或硬件触发ADC转换
void
ADC_Start
(
ADC_TypeDef
*
ADCx
);
//
启动指定ADC,开始模数转换
void
ADC_Stop
(
ADC_TypeDef
*
ADCx
);
//
关闭指定ADC,停止模数转换
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_Read
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
从指定通道读取转换结果
uint32_t
ADC_IsEOC
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
指定通道是否End
Of Conversion
void
ADC_ChnSelect
(
ADC_TypeDef
*
ADCx
,
uint32_t
chns
);
void
ADC_IntEOCEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断使能
void
ADC_IntEOCDis
(
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
);
//
转换完成中断状态
void
ADC_IntEOCEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
转换完成中断使能
void
ADC_IntEOCDis
(
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
);
//
转换完成中断状态
void
ADC_IntOVFEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断使能
void
ADC_IntOVFDis
(
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
);
//
数据溢出中断状态
void
ADC_IntOVFEn
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//
数据溢出中断使能
void
ADC_IntOVFDis
(
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
);
//
数据溢出中断状态
void
ADC_IntHFULLEn
(
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
半满中断标志清除
uint32_t
ADC_IntHFULLStat
(
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_IntHFULLClr
(
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_IntFULLDis
(
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
满中断状态
void
ADC_IntFULLEn
(
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
满中断标志清除
uint32_t
ADC_IntFULLStat
(
ADC_TypeDef
*
ADCx
,
uint32_t
chn
);
//FIFO
满中断状态
#endif //__SWM320_ADC_H__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_can.c
浏览文件 @
22513fe8
...
...
@@ -411,18 +411,6 @@ void CAN_INTRXNotEmptyDis(CAN_TypeDef * CANx)
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()
* 功能说明: 当TX Buffer空时触发中断使能
...
...
@@ -447,18 +435,6 @@ void CAN_INTTXBufEmptyDis(CAN_TypeDef * CANx)
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()
* 功能说明: TXERR/RXERR计数值达到Error Warning Limit时触发中断使能
...
...
@@ -483,18 +459,6 @@ void CAN_INTErrWarningDis(CAN_TypeDef * CANx)
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()
* 功能说明: RX FIFO 溢出时触发中断使能
...
...
@@ -519,18 +483,6 @@ void CAN_INTRXOverflowDis(CAN_TypeDef * CANx)
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()
* 功能说明: RX FIFO 溢出中断清除
...
...
@@ -567,18 +519,6 @@ void CAN_INTWakeupDis(CAN_TypeDef * CANx)
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()
* 功能说明: TXERR/RXERR计数值达到127时中断使能
...
...
@@ -603,18 +543,6 @@ void CAN_INTErrPassiveDis(CAN_TypeDef * CANx)
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()
* 功能说明: 仲裁失败中断使能
...
...
@@ -639,18 +567,6 @@ void CAN_INTArbitrLostDis(CAN_TypeDef * CANx)
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()
* 功能说明: 总线错误中断使能
...
...
@@ -676,13 +592,13 @@ void CAN_INTBusErrorDis(CAN_TypeDef * CANx)
}
/******************************************************************************************************************************************
* 函数名称: CAN_INT
BusError
Stat()
* 功能说明:
总线错误中断是否触发
* 函数名称: CAN_INTStat()
* 功能说明:
查询中断状态
* 输 入: 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 @@
#define CAN_FRAME_EXT 1
typedef
struct
{
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_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
uint32_t
Baudrate
;
//
波特率,即位传输速率,取值1
--1000000
uint8_t
FilterMode
;
//CAN_FILTER_16b
、C
AN_FILTER_32b
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_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
uint32_t
Baudrate
;
//
波特率,即位传输速率,取值1--100
0000
uint8_t
FilterMode
;
//CAN_FILTER_16b
、C
AN_FILTER_32b
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
uint16_t
FilterMask16b1
;
uint16_t
FilterMask16b2
;
...
...
@@ -25,15 +25,15 @@ typedef struct {
uint16_t
FilterCheck16b2
;
};
};
uint8_t
RXNotEmptyIEn
;
//
接收FIFO非空,有数据可读
uint8_t
RXOverflowIEn
;
//
接收FIFO溢出,有数据丢失
uint8_t
ArbitrLostIEn
;
//
控制器丢失仲裁变成接收方
uint8_t
ErrPassiveIEn
;
//
接收/发送错误计数值达到1
27
uint8_t
RXNotEmptyIEn
;
//
接收FIFO非空,有数据可读
uint8_t
RXOverflowIEn
;
//
接收FIFO溢出,有数据丢失
uint8_t
ArbitrLostIEn
;
//
控制器丢失仲裁变成接收方
uint8_t
ErrPassiveIEn
;
//
接收/发送错误计数值达到127
}
CAN_InitStructure
;
#define CAN_MODE_NORMAL 0 //
常规模式
#define CAN_MODE_LISTEN 1 //
监听模式
#define CAN_MODE_SELFTEST 2 //
自测模式
#define CAN_MODE_NORMAL 0 //
常规模式
#define CAN_MODE_LISTEN 1 //
监听模式
#define CAN_MODE_SELFTEST 2 //
自测模式
#define CAN_BS1_1tq 0
#define CAN_BS1_2tq 1
...
...
@@ -66,15 +66,15 @@ typedef struct {
#define CAN_SJW_3tq 2
#define CAN_SJW_4tq 3
#define CAN_FILTER_16b 0 //
两个16位过滤器
#define CAN_FILTER_32b 1 //
一个32位过滤器
#define CAN_FILTER_16b 0 //
两个16位过滤器
#define CAN_FILTER_32b 1 //
一个32位过滤器
typedef
struct
{
uint32_t
id
;
//
消息
ID
uint8_t
format
;
//
帧格式:CAN_FRAME_STD、C
AN_FRAME_EXT
uint8_t
remote
;
//
消息是否为远程帧
uint8_t
size
;
//
接收到的数据个数
uint8_t
data
[
8
];
//
接收到的数据
uint32_t
id
;
//
消息I
D
uint8_t
format
;
//
帧格式:CAN_FRAME_STD、CAN
_FRAME_EXT
uint8_t
remote
;
//
消息是否为远程帧
uint8_t
size
;
//
接收到的数据个数
uint8_t
data
[
8
];
//
接收到的数据
}
CAN_RXMessage
;
...
...
@@ -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_INTRXNotEmptyDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTRXNotEmptyStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTTXBufEmptyEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTTXBufEmptyDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTTXBufEmptyStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrWarningEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrWarningDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTErrWarningStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXOverflowEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXOverflowDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTRXOverflowStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTRXOverflowClear
(
CAN_TypeDef
*
CANx
);
void
CAN_INTWakeupEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTWakeupDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTWakeupStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrPassiveEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTErrPassiveDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTErrPassiveStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTArbitrLostEn
(
CAN_TypeDef
*
CANx
);
void
CAN_INTArbitrLostDis
(
CAN_TypeDef
*
CANx
);
uint32_t
CAN_INTArbitrLostStat
(
CAN_TypeDef
*
CANx
);
void
CAN_INTBusErrorEn
(
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__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_crc.h
浏览文件 @
22513fe8
...
...
@@ -2,22 +2,22 @@
#define __SWM320_CRC_H__
#define CRC32_IN32 0 //CRC32
算法,输
入数据32位
#define CRC32_IN16 2 //CRC32
算法,输
入数据16位
#define CRC32_IN8 4 //CRC32
算法,输
入数据 8位
#define CRC16_IN16 3 //CRC16
算法,输
入数据16位
#define CRC16_IN8 5 //CRC16
算法,输
入数据 8位
#define CRC32_IN32 0 //CRC32
算法,输入数据32位
#define CRC32_IN16 2 //CRC32
算法,输入数据16位
#define CRC32_IN8 4 //CRC32
算法,输入数据 8位
#define CRC16_IN16 3 //CRC16
算法,输入数据16位
#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
);
/******************************************************************************************************************************************
* 函数名称: CRC_Write()
*
功能说明: C
RC写入数据
*
输 入: uint32_t data
要写入的数据
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: CRC_Write()
*
功能说明: CRC写入数据
*
输 入: uint32_t data 要写入的数据
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
static
__INLINE
void
CRC_Write
(
uint32_t
data
)
{
...
...
@@ -25,11 +25,11 @@ static __INLINE void CRC_Write(uint32_t data)
}
/******************************************************************************************************************************************
* 函数名称: CRC_Result()
*
功能说明: 获
取CRC计算结果
*
输 入
: 无
*
输 出: uint32_t CR
C 计算结果
*
注意事
项: 无
*
函数名称
: CRC_Result()
*
功能说明: 获取CRC计算结果
*
输 入: 无
*
输 出: uint32_t CRC 计算结果
*
注意事项: 无
******************************************************************************************************************************************/
static
__INLINE
uint32_t
CRC_Result
(
void
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_dma.h
浏览文件 @
22513fe8
...
...
@@ -7,14 +7,14 @@
#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_CH_Open
(
uint32_t
chn
);
//DMA
通道打开
void
DMA_CH_Close
(
uint32_t
chn
);
//DMA
通道关闭
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_Close
(
uint32_t
chn
);
//DMA
通道关闭
void
DMA_CH_INTEn
(
uint32_t
chn
);
//DMA
中断使能,数据搬运完成后触发中断
void
DMA_CH_INTDis
(
uint32_t
chn
);
//DMA
中断禁止,数据搬运完成后不触发中断
void
DMA_CH_INTClr
(
uint32_t
chn
);
//DMA
中断标志清除
uint32_t
DMA_CH_INTStat
(
uint32_t
chn
);
//DMA
中断状态查询,1 数据搬运完成 0 数据搬运未完成
void
DMA_CH_INTEn
(
uint32_t
chn
);
//DMA
中断使能,数据搬运完成后触发中断
void
DMA_CH_INTDis
(
uint32_t
chn
);
//DMA
中断禁止,数据搬运完成后不触发中断
void
DMA_CH_INTClr
(
uint32_t
chn
);
//DMA
中断标志清除
uint32_t
DMA_CH_INTStat
(
uint32_t
chn
);
//DMA
中断状态查询,1 数据搬运完成 0 数据搬运未完成
#endif //__SWM320_DMA_H__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_exti.h
浏览文件 @
22513fe8
#ifndef __SWM320_EXTI_H__
#define __SWM320_EXTI_H__
void
EXTI_Init
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
mode
);
//
指定引脚外部中断初始化
void
EXTI_Open
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚外部中断打开(即使能)
void
EXTI_Close
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚外部中断关闭(即禁能)
void
EXTI_Init
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
,
uint32_t
mode
);
//
指定引脚外部中断初始化
void
EXTI_Open
(
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_RawState
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
void
EXTI_Clear
(
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
);
//
指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
void
EXTI_Clear
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
指定引脚外部中断清除(即清除中断标志,以免再次进入此中断)
#define EXTI_FALL_EDGE 0x00 //
下降沿触发中断
#define EXTI_RISE_EDGE 0x01 //
上升沿触发中断
#define EXTI_BOTH_EDGE 0x02 //
双边沿触发中断
#define EXTI_LOW_LEVEL 0x10 //
低电平触发中断
#define EXTI_HIGH_LEVEL 0x11 //
高电平触发中断
#define EXTI_FALL_EDGE 0x00 //
下降沿触发中断
#define EXTI_RISE_EDGE 0x01 //
上升沿触发中断
#define EXTI_BOTH_EDGE 0x02 //
双边沿触发中断
#define EXTI_LOW_LEVEL 0x10 //
低电平触发中断
#define EXTI_HIGH_LEVEL 0x11 //
高电平触发中断
#endif //__SWM320_EXTI_H__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_flash.c
*
功能说明: 使用芯片的IAP功能将片上Flash模拟
成EEPROM来保存数据,掉电后不丢失
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_flash.c
*
功能说明: 使用芯片的IAP功能将片上Flash模拟成EEPROM来保存数据,掉电后不丢失
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*******************************************************************************************************************************************
* @attention
*
...
...
@@ -27,11 +27,11 @@ IAP_Flash_Write_t IAP_Flash_Write = (IAP_Flash_Write_t)0x11000801;
/******************************************************************************************************************************************
* 函数名称: FLASH_Erase()
*
功能说明: 片内F
lash擦除
*
输 入: uint32_t addr 擦
除地址,扇区大小为4K Byte
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: FLASH_Erase()
*
功能说明: 片内Flash擦除
*
输 入: uint32_t addr 擦除地址,扇区大小为
4K Byte
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
FLASH_Erase
(
uint32_t
addr
)
{
...
...
@@ -45,13 +45,13 @@ void FLASH_Erase(uint32_t addr)
}
/******************************************************************************************************************************************
* 函数名称: FLASH_Write()
*
功能说明: 片内Fl
ash写入
*
输 入: uint32_t addr
写入地址
* uint32_t buff[]
要写
入的数据
* uint32_t count
要写入数据的个数,以
字为单位,且必须是4的整数倍,即最少写入4个字
*
输 出
: 无
*
注意事项: 写入
数据个数必须是4的整数倍,即最少写入4个字
*
函数名称
: FLASH_Write()
*
功能说明: 片内Flash写入
*
输 入: uint32_t addr 写入地址
* uint32_t buff[]
要写入的数据
* uint32_t count
要写入数据的个数,以字为单位,且必须是4的整数倍,即最少写入4个字
*
输 出: 无
*
注意事项: 写入数据个数必须是4的整数倍,即最少写入4个字
******************************************************************************************************************************************/
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参数设置成1
20MHz主频下运行时所需的参数
*
输 入
: 无
*
输 出
: 无
*
注意事
项: 无
*
函数名称: Flash_Param_at_x
MHz()
*
功能说明: 将Flash参数设置成xMHz主频下运行时所需的参数
*
输 入: uint32_t x 可取值
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
Flash_Param_at_
120MHz
(
void
)
void
Flash_Param_at_
xMHz
(
uint32_t
x
)
{
__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
();
}
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.h
浏览文件 @
22513fe8
...
...
@@ -5,7 +5,7 @@
void
FLASH_Erase
(
uint32_t
addr
);
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 @@
* uint32_t pull_up 上拉电阻,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
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_gpio.h
浏览文件 @
22513fe8
...
...
@@ -2,16 +2,16 @@
#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_ClrBit
(
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
);
//
读取参数指定的引脚的电平状态
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_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位连续引脚的电平状态
void
GPIO_SetBit
(
GPIO_TypeDef
*
GPIOx
,
uint32_t
n
);
//
将参数指定的引脚电平置高
void
GPIO_ClrBit
(
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
);
//
读取参数指定的引脚的电平状态
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_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位连续引脚的电平状态
void
GPIO_AtomicSetBit
(
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 @@
#define __SWM320_I2C_H__
typedef
struct
{
uint8_t
Master
;
//1
主机模式
uint8_t
Addr7b
;
//1 7
位地址 0 10位地址
uint8_t
Master
;
//1
主机模式
uint8_t
Addr7b
;
//1 7
位地址 0 10位地址
uint32_t
MstClk
;
//
主机传输时钟频率
uint8_t
MstIEn
;
//
主机模式中断使能
uint32_t
MstClk
;
//
主机传输时钟频率
uint8_t
MstIEn
;
//
主机模式中断使能
uint16_t
SlvAddr
;
//
从机地址
uint8_t
SlvRxEndIEn
;
//
从机接收完成中断使能
uint8_t
SlvTxEndIEn
;
//
从机发送完成中断使能
uint8_t
SlvSTADetIEn
;
//
从机检测到起始中断使能
uint8_t
SlvSTODetIEn
;
//
从机检测到终止中断使能
uint8_t
SlvRdReqIEn
;
//
从机接收到读请求中断使能
uint8_t
SlvWrReqIEn
;
//
从机接收到写请求中断使能
uint16_t
SlvAddr
;
//
从机地址
uint8_t
SlvRxEndIEn
;
//
从机接收完成中断使能
uint8_t
SlvTxEndIEn
;
//
从机发送完成中断使能
uint8_t
SlvSTADetIEn
;
//
从机检测到起始中断使能
uint8_t
SlvSTODetIEn
;
//
从机检测到终止中断使能
uint8_t
SlvRdReqIEn
;
//
从机接收到读请求中断使能
uint8_t
SlvWrReqIEn
;
//
从机接收到写请求中断使能
}
I2C_InitStructure
;
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_lcd.c
*
功能说明: SWM320单
片机的LCD功能驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_lcd.c
*
功能说明: SWM320单片机的LCD功能驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
*
*******************************************************************************************************************************************
...
...
@@ -24,12 +24,12 @@
#include <string.h>
/******************************************************************************************************************************************
* 函数名称: LCD_Init()
*
功能说明: L
CD初始化
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
* LCD_InitStructure * initStruct
包含LCD相关
设定值的结构体
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: LCD_Init()
*
功能说明: LCD初始化
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
* LCD_InitStructure * initStruct
包含LCD相关设定值的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
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
);
break
;
}
if
(
initStruct
->
Interface
==
LCD_INTERFACE_RGB
)
{
LCDx
->
START
=
(
0
<<
LCD_START_MPUEN_Pos
);
LCDx
->
CR0
=
((
initStruct
->
HnPixel
-
1
)
<<
LCD_CR0_HPIX_Pos
)
|
((
initStruct
->
VnPixel
-
1
)
<<
LCD_CR0_VPIX_Pos
)
|
(
initStruct
->
ClkAlways
<<
LCD_CR0_DCLK_Pos
)
|
(
initStruct
->
HsyncWidth
<<
LCD_CR0_HLOW_Pos
);
LCDx
->
CR1
=
((
initStruct
->
Hfp
-
1
)
<<
LCD_CR1_HFP_Pos
)
|
((
initStruct
->
Hbp
-
1
)
<<
LCD_CR1_HBP_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
->
CR0
=
((
initStruct
->
HnPixel
-
1
)
<<
LCD_CR0_HPIX_Pos
)
|
((
initStruct
->
VnPixel
-
1
)
<<
LCD_CR0_VPIX_Pos
)
|
(
initStruct
->
ClkAlways
<<
LCD_CR0_DCLK_Pos
)
|
(
initStruct
->
HsyncWidth
<<
LCD_CR0_HLOW_Pos
);
LCDx
->
CR1
=
((
initStruct
->
Hfp
-
1
)
<<
LCD_CR1_HFP_Pos
)
|
((
initStruct
->
Hbp
-
1
)
<<
LCD_CR1_HBP_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
);
LCDx
->
IE
=
1
;
LCDx
->
IF
=
1
;
//
清
除标志
LCDx
->
IF
=
1
;
//
清除标志
if
(
initStruct
->
IntEOTEn
)
LCD_INTEn
(
LCDx
);
else
LCD_INTDis
(
LCDx
);
...
...
@@ -82,11 +73,11 @@ void LCD_Init(LCD_TypeDef * LCDx, LCD_InitStructure * initStruct)
}
/******************************************************************************************************************************************
* 函数名称: LCD_Start()
*
功能说明:
启动一次数据传输
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: LCD_Start()
*
功能说明: 启动一次数据传输
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
LCD_Start
(
LCD_TypeDef
*
LCDx
)
{
...
...
@@ -94,11 +85,11 @@ void LCD_Start(LCD_TypeDef * LCDx)
}
/******************************************************************************************************************************************
* 函数名称: LCD_IsBusy()
*
功能说明:
是否正在进行数据传输
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 出: uint32_t 1 正在传输数据
0 数据传输已完成
*
注意事
项: 无
*
函数名称
: LCD_IsBusy()
*
功能说明: 是否正在进行数据传输
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出: uint32_t 1 正在传输数据 0 数据传输已完成
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
LCD_IsBusy
(
LCD_TypeDef
*
LCDx
)
{
...
...
@@ -106,11 +97,11 @@ uint32_t LCD_IsBusy(LCD_TypeDef * LCDx)
}
/******************************************************************************************************************************************
* 函数名称: LCD_INTEn()
*
功能说明: LCD中断使能,
完成指定长度的数据传输时触发中断
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: LCD_INTEn()
*
功能说明: LCD中断使能,完成指定长度的数据传输时触发中断
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
LCD_INTEn
(
LCD_TypeDef
*
LCDx
)
{
...
...
@@ -118,11 +109,11 @@ void LCD_INTEn(LCD_TypeDef * LCDx)
}
/******************************************************************************************************************************************
* 函数名称: LCD_INTDis()
*
功能说明: LCD中断禁止,
完成指定长度的数据传输时不触发中断
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: LCD_INTDis()
*
功能说明: LCD中断禁止,完成指定长度的数据传输时不触发中断
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
LCD_INTDis
(
LCD_TypeDef
*
LCDx
)
{
...
...
@@ -130,11 +121,11 @@ void LCD_INTDis(LCD_TypeDef * LCDx)
}
/******************************************************************************************************************************************
* 函数名称: LCD_INTClr()
*
功能说明: LCD
中断标志清除
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: LCD_INTClr()
*
功能说明: LCD中断标志清除
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
LCD_INTClr
(
LCD_TypeDef
*
LCDx
)
{
...
...
@@ -142,11 +133,11 @@ void LCD_INTClr(LCD_TypeDef * LCDx)
}
/******************************************************************************************************************************************
* 函数名称: LCD_INTStat()
*
功能说明: LCD中
断状态查询
*
输 入: LCD_TypeDef * LCDx 指定要被设置
的LCD,有效值包括LCD
*
输 出: uint32_t 1 完成指定长度的数据传输
0 未完成指定长度的数据传输
*
注意事
项: 无
*
函数名称
: LCD_INTStat()
*
功能说明: LCD中断状态查询
*
输 入: LCD_TypeDef * LCDx 指定要被设置的LCD,有效值包括
LCD
*
输 出: uint32_t 1 完成指定长度的数据传输 0 未完成指定长度的数据传输
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
LCD_INTStat
(
LCD_TypeDef
*
LCDx
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.h
浏览文件 @
22513fe8
...
...
@@ -2,10 +2,7 @@
#define __SWM320_LCD_H__
typedef
struct
{
uint8_t
Interface
;
//LCD屏接口:LCD_INTERFACE_RGB、LCD_INTERFACE_I80、LCD_INTERFACE_M68
/* RGB同步接口参数 */
typedef
struct
{
uint16_t
HnPixel
;
//水平方向像素个数,最大取值1024
uint16_t
VnPixel
;
//垂直方向像素个数,最大取值 768
uint8_t
Hfp
;
//horizonal front porch,最大取值32
...
...
@@ -21,10 +18,6 @@ typedef struct {
}
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_FALL 1 //屏幕在DOTCLK的下降沿采样数据
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_norflash.h
浏览文件 @
22513fe8
...
...
@@ -2,12 +2,12 @@
#define __SWM320_NORFLASH_H__
typedef
struct
{
uint8_t
DataWidth
;
// 8
、1
6
uint8_t
DataWidth
;
// 8
、
16
uint8_t
WELowPulseTime
;
// WE# pulse width
,单位为系统时钟周期,最大值为
7
uint8_t
OEPreValidTime
;
// Valid data output after OE# low
,单位为系统时钟周期,最大值为
15
uint8_t
WELowPulseTime
;
// WE# pulse width
,单位为系统时钟周期,最大值为7
uint8_t
OEPreValidTime
;
// Valid data output after OE# low
,单位为系统时钟周期,最大值为15
uint8_t
OperFinishIEn
;
//
操作(写入、擦除)完成中断使能
uint8_t
OperFinishIEn
;
//
操作(写入、擦除)完成中断使能
uint8_t
OperTimeoutIEn
;
}
NORFL_InitStructure
;
...
...
@@ -21,7 +21,7 @@ uint32_t NORFL_Read(uint32_t addr);
uint16_t
NORFL_ReadID
(
uint32_t
id_addr
);
/*
当前版本总线读只支持字读
/*
当前版本总线读只支持字读
#define NORFL_Read8(addr) *((volatile uint8_t *)(NORFLM_BASE + addr))
#define NORFL_Read16(addr) *((volatile uint16_t *)(NORFLM_BASE + addr)) */
#define NORFL_Read32(addr) *((volatile uint32_t *)(NORFLM_BASE + addr))
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_port.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文件名称
: SWM320_port.c
*
功能说明: SWM320单片机的端口引脚功能选择库函数
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
文件名称:
SWM320_port.c
*
功能说明: SWM320单片机的端口引脚功能选择库函数
*
技术支持:
http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录:
*
*
*******************************************************************************************************************************************
...
...
@@ -23,15 +23,15 @@
/******************************************************************************************************************************************
*
函数名称
: PORT_Init()
*
功能说明: 端口引脚功能选择,可用的功能见"SWM320_port.h"文件
*
输 入: uint32_t PORTx 指定PORT端口,有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、P
ORTP
* uint32_t n
指定PORT引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、P
IN23
* uint32_t func
指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
* uint32_t digit_in_en
数字输入使能
*
输 出: 无
*
注意事项: 当引脚标号n为偶数时,func取值只能是FUNMUX0开头的,如
FUNMUX0_UART0_RXD
*
当引脚标号n为奇数时,func取值只能是FUNMUX1开头的,如
FUNMUX1_UART0_TXD
*
函数名称:
PORT_Init()
*
功能说明: 端口引脚功能选择,可用的功能见"SWM320_port.h"文件
*
输 入: uint32_t PORTx 指定PORT端口,有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、PORTP
* uint32_t n
指定PORT引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
* uint32_t func
指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
* uint32_t digit_in_en
数字输入使能
*
输 出: 无
*
注意事项: 当引脚标号n为偶数时,func取值只能是FUNMUX0开头的,如FUNMUX0_UA
RT0_RXD
*
当引脚标号n为奇数时,func取值只能是FUNMUX1开头的,如FUNMUX1_
UART0_TXD
******************************************************************************************************************************************/
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__
#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 PORTB 1
...
...
@@ -425,8 +425,8 @@ void PORT_Init(uint32_t PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en);
/*
下面宏定义的取值全部在正确值的基础上“加100”,以区分上面宏定义的值,从而方便库函数的编写
*/
/*
下面这些值是偶数编号引脚的功能取值,如PIN0、PIN2、
... */
/*
下面宏定义的取值全部在正确值的基础上“加100”,以区分上面宏定义的值,从而方便库函数的编写*/
/*
下面这些值是偶数编号引脚的功能取值,如PIN0、PIN2、... */
#define FUNMUX0_UART0_RXD 100
#define FUNMUX0_UART1_RXD 101
#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);
#define FUNMUX0_UART2_CTS 123
#define FUNMUX0_UART3_CTS 124
/*
下面这些值是奇数编号引脚的功能取值,如PIN1、PIN3、
... */
/*
下面这些值是奇数编号引脚的功能取值,如PIN1、PIN3、... */
#define FUNMUX1_UART0_TXD 100
#define FUNMUX1_UART1_TXD 101
#define FUNMUX1_UART2_TXD 102
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文件名称
: SWM320_pwm.c
*
功能说明: SWM320单片机的PWM功能驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
文件名称:
SWM320_pwm.c
*
功能说明: SWM320单片机的PWM功能驱动库
*
技术支持:
http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录:
*
*
*******************************************************************************************************************************************
...
...
@@ -23,12 +23,12 @@
/******************************************************************************************************************************************
*
函数名称
: PWM_Init()
*
功能说明: PWM初始化
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* PWM_InitStructure * initStruct
包含PWM相关设定值的结构体
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_Init()
*
功能说明: PWM初始化
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* PWM_InitStructure * initStruct
包含PWM相关设定值的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_Init
(
PWM_TypeDef
*
PWMx
,
PWM_InitStructure
*
initStruct
)
{
...
...
@@ -39,7 +39,7 @@ void PWM_Init(PWM_TypeDef * PWMx, PWM_InitStructure * initStruct)
SYS
->
CLKDIV
&=
~
SYS_CLKDIV_PWM_Msk
;
SYS
->
CLKDIV
|=
(
initStruct
->
clk_div
<<
SYS_CLKDIV_PWM_Pos
);
PWM_Stop
(
PWMx
,
1
,
1
);
//
一些关键寄存器只能在PWM停止时设置
PWM_Stop
(
PWMx
,
1
,
1
);
//
一些关键寄存器只能在PWM停止时设置
PWMx
->
MODE
=
initStruct
->
mode
;
...
...
@@ -84,7 +84,7 @@ void PWM_Init(PWM_TypeDef * PWMx, PWM_InitStructure * initStruct)
break
;
}
PWMG
->
IRS
=
((
0x01
<<
bit_offset
)
|
(
0x01
<<
(
bit_offset
+
1
))
|
(
0x01
<<
(
bit_offset
+
12
))
|
(
0x01
<<
(
bit_offset
+
13
)));
//
清除中断标志
PWMG
->
IRS
=
((
0x01
<<
bit_offset
)
|
(
0x01
<<
(
bit_offset
+
1
))
|
(
0x01
<<
(
bit_offset
+
12
))
|
(
0x01
<<
(
bit_offset
+
13
)));
//
清除中断标志
PWMG
->
IE
&=
~
((
0x01
<<
bit_offset
)
|
(
0x01
<<
(
bit_offset
+
1
))
|
(
0x01
<<
(
bit_offset
+
12
))
|
(
0x01
<<
(
bit_offset
+
13
)));
PWMG
->
IE
|=
(
initStruct
->
NCycleAIEn
<<
bit_offset
)
|
(
initStruct
->
NCycleBIEn
<<
(
bit_offset
+
1
))
|
(
initStruct
->
HEndAIEn
<<
(
bit_offset
+
12
))
|
(
initStruct
->
HEndBIEn
<<
(
bit_offset
+
13
));
...
...
@@ -100,13 +100,13 @@ void PWM_Init(PWM_TypeDef * PWMx, PWM_InitStructure * initStruct)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_Start()
*
功能说明: 启动PWM,开始PWM输出
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chA 0
通道A不启动 1 通道A启动
* uint32_t chB 0
通道B不启动 1 通道B启动
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_Start()
*
功能说明: 启动PWM,开始PWM输出
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chA 0
通道A不启动 1 通道A启动
* uint32_t chB 0
通道B不启动 1 通道B启动
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_Start
(
PWM_TypeDef
*
PWMx
,
uint32_t
chA
,
uint32_t
chB
)
{
...
...
@@ -139,13 +139,13 @@ void PWM_Start(PWM_TypeDef * PWMx, uint32_t chA, uint32_t chB)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_Stop()
*
功能说明: 关闭PWM,停止PWM输出
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chA 0
通道A不关闭 1 通道A关闭
* uint32_t chB 0
通道B不关闭 1 通道B关闭
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_Stop()
*
功能说明: 关闭PWM,停止PWM输出
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chA 0
通道A不关闭 1 通道A关闭
* uint32_t chB 0
通道B不关闭 1 通道B关闭
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_Stop
(
PWM_TypeDef
*
PWMx
,
uint32_t
chA
,
uint32_t
chB
)
{
...
...
@@ -178,13 +178,13 @@ void PWM_Stop(PWM_TypeDef * PWMx, uint32_t chA, uint32_t chB)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_SetCycle()
*
功能说明: 设置周期
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
* uint16_t cycle
要设定的周期值
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_SetCycle()
*
功能说明: 设置周期
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
* uint16_t cycle
要设定的周期值
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_SetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
cycle
)
{
...
...
@@ -195,12 +195,12 @@ void PWM_SetCycle(PWM_TypeDef * PWMx, uint32_t chn, uint16_t cycle)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_GetCycle()
*
功能说明: 获取周期
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要查询哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: uint16_t 获取到的周期值
*
注意事项: 无
*
函数名称:
PWM_GetCycle()
*
功能说明: 获取周期
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要查询哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: uint16_t 获取到的周期值
*
注意事项: 无
******************************************************************************************************************************************/
uint16_t
PWM_GetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -215,13 +215,13 @@ uint16_t PWM_GetCycle(PWM_TypeDef * PWMx, uint32_t chn)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_SetHDuty()
*
功能说明: 设置高电平时长
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
* uint16_t hduty
要设定的高电平时长
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_SetHDuty()
*
功能说明: 设置高电平时长
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
* uint16_t hduty
要设定的高电平时长
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_SetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
hduty
)
{
...
...
@@ -232,12 +232,12 @@ void PWM_SetHDuty(PWM_TypeDef * PWMx, uint32_t chn, uint16_t hduty)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_GetHDuty()
*
功能说明: 获取高电平时长
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要查询哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: uint16_t 获取到的高电平时长
*
注意事项: 无
*
函数名称:
PWM_GetHDuty()
*
功能说明: 获取高电平时长
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要查询哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: uint16_t 获取到的高电平时长
*
注意事项: 无
******************************************************************************************************************************************/
uint16_t
PWM_GetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -252,13 +252,13 @@ uint16_t PWM_GetHDuty(PWM_TypeDef * PWMx, uint32_t chn)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_SetDeadzone()
*
功能说明: 设置死区时长
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
* uint8_t deadzone
要设定的死区时长
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_SetDeadzone()
*
功能说明: 设置死区时长
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
* uint8_t deadzone
要设定的死区时长
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_SetDeadzone
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint8_t
deadzone
)
{
...
...
@@ -269,12 +269,12 @@ void PWM_SetDeadzone(PWM_TypeDef * PWMx, uint32_t chn, uint8_t deadzone)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_GetDeadzone()
*
功能说明: 获取死区时长
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要查询哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: uint8_t 获取到的死区时长
*
注意事项: 无
*
函数名称:
PWM_GetDeadzone()
*
功能说明: 获取死区时长
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要查询哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: uint8_t 获取到的死区时长
*
注意事项: 无
******************************************************************************************************************************************/
uint8_t
PWM_GetDeadzone
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -290,12 +290,12 @@ uint8_t PWM_GetDeadzone(PWM_TypeDef * PWMx, uint32_t chn)
/******************************************************************************************************************************************
*
函数名称
: PWM_IntNCycleEn()
*
功能说明: 新周期开始中断使能
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_IntNCycleEn()
*
功能说明: 新周期开始中断使能
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_IntNCycleEn
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -334,12 +334,12 @@ void PWM_IntNCycleEn(PWM_TypeDef * PWMx, uint32_t chn)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_IntNCycleDis()
*
功能说明: 新周期开始中断禁能
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_IntNCycleDis()
*
功能说明: 新周期开始中断禁能
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_IntNCycleDis
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -378,12 +378,12 @@ void PWM_IntNCycleDis(PWM_TypeDef * PWMx, uint32_t chn)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_IntNCycleClr()
*
功能说明: 新周期开始中断标志清除
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_IntNCycleClr()
*
功能说明: 新周期开始中断标志清除
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_IntNCycleClr
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -422,12 +422,12 @@ void PWM_IntNCycleClr(PWM_TypeDef * PWMx, uint32_t chn)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_IntNCycleStat()
*
功能说明: 新周期开始中断是否发生
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: uint32_t 1 新周期开始中断已发生 0 新周期开始中断未发生
*
注意事项: 无
*
函数名称:
PWM_IntNCycleStat()
*
功能说明: 新周期开始中断是否发生
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: uint32_t 1 新周期开始中断已发生 0 新周期开始中断未发生
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
PWM_IntNCycleStat
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -471,12 +471,12 @@ uint32_t PWM_IntNCycleStat(PWM_TypeDef * PWMx, uint32_t chn)
/******************************************************************************************************************************************
*
函数名称
: PWM_IntHEndEn()
*
功能说明: 高电平结束中断使能
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_IntHEndEn()
*
功能说明: 高电平结束中断使能
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_IntHEndEn
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -515,12 +515,12 @@ void PWM_IntHEndEn(PWM_TypeDef * PWMx, uint32_t chn)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_IntHEndDis()
*
功能说明: 高电平结束中断禁能
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_IntHEndDis()
*
功能说明: 高电平结束中断禁能
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_IntHEndDis
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -559,12 +559,12 @@ void PWM_IntHEndDis(PWM_TypeDef * PWMx, uint32_t chn)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_IntHEndClr()
*
功能说明: 高电平结束中断标志清除
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: 无
*
注意事项: 无
*
函数名称:
PWM_IntHEndClr()
*
功能说明: 高电平结束中断标志清除
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
PWM_IntHEndClr
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
@@ -603,12 +603,12 @@ void PWM_IntHEndClr(PWM_TypeDef * PWMx, uint32_t chn)
}
/******************************************************************************************************************************************
*
函数名称
: PWM_IntHEndStat()
*
功能说明: 高电平结束中断是否发生
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、P
WM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、P
WM_CH_B
*
输 出: uint32_t 1 高电平结束中断已发生 0 高电平结束中断未发生
*
注意事项: 无
*
函数名称:
PWM_IntHEndStat()
*
功能说明: 高电平结束中断是否发生
*
输 入: PWM_TypeDef * PWMx 指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
* uint32_t chn
选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_
B
*
输 出: uint32_t 1 高电平结束中断已发生 0 高电平结束中断未发生
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
PWM_IntHEndStat
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.h
浏览文件 @
22513fe8
...
...
@@ -2,57 +2,57 @@
#define __SWM320_PWM_H__
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
hdutyA
;
//A
路占空比
uint16_t
deadzoneA
;
//A
路死区时长,取值0
--1023
uint8_t
initLevelA
;
//A
路初始输出电平,0 低电平 1 高电平
uint16_t
cycleA
;
//A
路周期
uint16_t
hdutyA
;
//A
路占空比
uint16_t
deadzoneA
;
//A
路死区时长,取值0--
1023
uint8_t
initLevelA
;
//A
路初始输出电平,0 低电平 1 高电平
uint16_t
cycleB
;
//B
路周期
uint16_t
hdutyB
;
//B
路占空比
uint16_t
deadzoneB
;
//B
路死区时长,取值0
--1023
uint8_t
initLevelB
;
//B
路初始输出电平,0 低电平 1 高电平
uint16_t
cycleB
;
//B
路周期
uint16_t
hdutyB
;
//B
路占空比
uint16_t
deadzoneB
;
//B
路死区时长,取值0--
1023
uint8_t
initLevelB
;
//B
路初始输出电平,0 低电平 1 高电平
uint8_t
HEndAIEn
;
//A
路高电平结束中断使能
uint8_t
NCycleAIEn
;
//A
路新周期开始中断使能
uint8_t
HEndBIEn
;
//B
路高电平结束中断使能
uint8_t
NCycleBIEn
;
//B
路新周期开始中断使能
uint8_t
HEndAIEn
;
//A
路高电平结束中断使能
uint8_t
NCycleAIEn
;
//A
路新周期开始中断使能
uint8_t
HEndBIEn
;
//B
路高电平结束中断使能
uint8_t
NCycleBIEn
;
//B
路新周期开始中断使能
}
PWM_InitStructure
;
#define PWM_CLKDIV_1 0
#define PWM_CLKDIV_8 1
#define PWM_MODE_INDEP 0 //A
路和B路为两路独立输出
#define PWM_MODE_COMPL 1 //A
路和B路为一路互补输出
#define PWM_MODE_INDEP_CALIGN 3 //A
路和B路为两路独立输出,中心对齐
#define PWM_MODE_COMPL_CALIGN 4 //A
路和B路为一路互补输出,中心对齐
#define PWM_MODE_INDEP 0 //A
路和B路为两路独立输出
#define PWM_MODE_COMPL 1 //A
路和B路为一路互补输出
#define PWM_MODE_INDEP_CALIGN 3 //A
路和B路为两路独立输出,中心对齐
#define PWM_MODE_COMPL_CALIGN 4 //A
路和B路为一路互补输出,中心对齐
#define PWM_CH_A 0
#define PWM_CH_B 1
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_Stop
(
PWM_TypeDef
*
PWMx
,
uint32_t
chA
,
uint32_t
chB
);
//
关闭PWM,停止PWM输出
void
PWM_SetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
cycle
);
//
设置周期
uint16_t
PWM_GetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取周期
void
PWM_SetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
hduty
);
//
设置高电平时长
uint16_t
PWM_GetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取高电平时长
void
PWM_SetDeadzone
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint8_t
deadzone
);
//
设置死区时长
uint8_t
PWM_GetDeadzone
(
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_IntNCycleClr
(
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_IntHEndDis
(
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
);
//
高电平结束中断是否发生
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_Stop
(
PWM_TypeDef
*
PWMx
,
uint32_t
chA
,
uint32_t
chB
);
//
关闭PWM,停止PWM输出
void
PWM_SetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
cycle
);
//
设置周期
uint16_t
PWM_GetCycle
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取周期
void
PWM_SetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint16_t
hduty
);
//
设置高电平时长
uint16_t
PWM_GetHDuty
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
);
//
获取高电平时长
void
PWM_SetDeadzone
(
PWM_TypeDef
*
PWMx
,
uint32_t
chn
,
uint8_t
deadzone
);
//
设置死区时长
uint8_t
PWM_GetDeadzone
(
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_IntNCycleClr
(
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_IntHEndDis
(
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
);
//
高电平结束中断是否发生
#endif //__SWM320_PWM_H__
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_rtc.c
*
功能说明: SWM320单
片机的RTC驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_rtc.c
*
功能说明: SWM320单片机的RTC驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
*
*******************************************************************************************************************************************
...
...
@@ -24,18 +24,18 @@
static
uint32_t
calcWeekDay
(
uint32_t
year
,
uint32_t
month
,
uint32_t
date
);
/******************************************************************************************************************************************
* 函数名称: RTC_Init()
*
功能说明: R
TC初始化
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,有效值包括RTC
* RTC_InitStructure * initStruct
包含RTC相关
设定值的结构体
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_Init()
*
功能说明: RTC初始化
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,有效值包括
RTC
* RTC_InitStructure * initStruct
包含RTC相关设定值的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_Init
(
RTC_TypeDef
*
RTCx
,
RTC_InitStructure
*
initStruct
)
{
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
)
|
((
uint32_t
)
1
<<
SYS_CLKEN_ALIVE_Pos
);
...
...
@@ -72,11 +72,11 @@ void RTC_Init(RTC_TypeDef * RTCx, RTC_InitStructure * initStruct)
}
/******************************************************************************************************************************************
* 函数名称: RTC_Start()
*
功能说
明: 启动RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_Start()
*
功能说明: 启动
RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_Start
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -84,11 +84,11 @@ void RTC_Start(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_Stop()
*
功能说明:
停止RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_Stop()
*
功能说明: 停止
RTC
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_Stop
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -96,12 +96,12 @@ void RTC_Stop(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_GetDateTime()
*
功能说明:
获取当前的时间和日期
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,有效值包括RTC
* RTC_DateTime * dateTime
获取到的时间、日
期值存入此指针指向的结构体
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_GetDateTime()
*
功能说明: 获取当前的时间和日期
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,有效值包括
RTC
* RTC_DateTime * dateTime
获取到的时间、日期值存入此指针指向的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_GetDateTime
(
RTC_TypeDef
*
RTCx
,
RTC_DateTime
*
dateTime
)
{
...
...
@@ -115,12 +115,12 @@ void RTC_GetDateTime(RTC_TypeDef * RTCx, RTC_DateTime * dateTime)
}
/******************************************************************************************************************************************
* 函数名称: RTC_AlarmSetup()
*
功能说明: R
TC闹钟设定
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,有效值包括RTC
* RTC_AlarmStructure * alarmStruct
包含RTC闹钟
设定值的结构体
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_AlarmSetup()
*
功能说明: RTC闹钟设定
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,有效值包括
RTC
* RTC_AlarmStructure * alarmStruct
包含RTC闹钟设定值的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_AlarmSetup
(
RTC_TypeDef
*
RTCx
,
RTC_AlarmStructure
*
alarmStruct
)
{
...
...
@@ -143,13 +143,13 @@ void RTC_AlarmSetup(RTC_TypeDef * RTCx, RTC_AlarmStructure * alarmStruct)
}
/******************************************************************************************************************************************
* 函数名称: calcWeekDay()
*
功能说明: 计
算指定年、月、日是星期几
*
输 入: uint32_t year
年
* uint32_t month 月
* uint32_t date 日
*
输 出: uint32_t 0 星期日 1 星期一 ... ..
. 6 星期六
*
注意事
项: 无
*
函数名称
: calcWeekDay()
*
功能说明: 计算指定年、月、日是星期几
*
输 入: uint32_t year 年
* uint32_t month
月
* uint32_t date
日
*
输 出: uint32_t 0 星期日 1 星期一 ... ... 6 星期六
*
注意事项: 无
******************************************************************************************************************************************/
static
uint32_t
calcWeekDay
(
uint32_t
year
,
uint32_t
month
,
uint32_t
date
)
{
...
...
@@ -173,11 +173,11 @@ static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondEn()
*
功能说明:
秒中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntSecondEn()
*
功能说明: 秒中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntSecondEn
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -185,11 +185,11 @@ void RTC_IntSecondEn(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondDis()
*
功能说明:
秒中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntSecondDis()
*
功能说明: 秒中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntSecondDis
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -197,11 +197,11 @@ void RTC_IntSecondDis(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondClr()
*
功能说明:
秒中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntSecondClr()
*
功能说明: 秒中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntSecondClr
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -209,11 +209,11 @@ void RTC_IntSecondClr(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntSecondStat()
*
功能说明:
秒中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出: uint32_t 1 秒中断发生
0 秒中断未发生
*
注意事
项: 无
*
函数名称
: RTC_IntSecondStat()
*
功能说明: 秒中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 秒中断发生 0 秒中断未发生
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
RTC_IntSecondStat
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -221,11 +221,11 @@ uint32_t RTC_IntSecondStat(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteEn()
*
功能说明:
分中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntMinuteEn()
*
功能说明: 分中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntMinuteEn
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -233,11 +233,11 @@ void RTC_IntMinuteEn(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteDis()
*
功能说明:
分中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntMinuteDis()
*
功能说明: 分中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntMinuteDis
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -245,11 +245,11 @@ void RTC_IntMinuteDis(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteClr()
*
功能说明:
分中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntMinuteClr()
*
功能说明: 分中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntMinuteClr
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -257,11 +257,11 @@ void RTC_IntMinuteClr(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntMinuteStat()
*
功能说明:
分中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出: uint32_t 1 分中断发生
0 分中断未发生
*
注意事
项: 无
*
函数名称
: RTC_IntMinuteStat()
*
功能说明: 分中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 分中断发生 0 分中断未发生
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
RTC_IntMinuteStat
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -269,11 +269,11 @@ uint32_t RTC_IntMinuteStat(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourEn()
*
功能说明:
时中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntHourEn()
*
功能说明: 时中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntHourEn
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -281,11 +281,11 @@ void RTC_IntHourEn(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourDis()
*
功能说明: 时
中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntHourDis()
*
功能说明: 时中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntHourDis
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -293,11 +293,11 @@ void RTC_IntHourDis(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourClr()
*
功能说明: 时
中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntHourClr()
*
功能说明: 时中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntHourClr
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -305,11 +305,11 @@ void RTC_IntHourClr(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntHourStat()
*
功能说明: 时
中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出: uint32_t 1 时中断发生 0
时中断未发生
*
注意事
项: 无
*
函数名称
: RTC_IntHourStat()
*
功能说明: 时中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 时中断发生 0 时中断未发生
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
RTC_IntHourStat
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -317,11 +317,11 @@ uint32_t RTC_IntHourStat(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateEn()
*
功能说明:
日中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntDateEn()
*
功能说明: 日中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntDateEn
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -329,11 +329,11 @@ void RTC_IntDateEn(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateDis()
*
功能说明:
日中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntDateDis()
*
功能说明: 日中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntDateDis
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -341,11 +341,11 @@ void RTC_IntDateDis(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateClr()
*
功能说明:
日中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntDateClr()
*
功能说明: 日中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntDateClr
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -353,11 +353,11 @@ void RTC_IntDateClr(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntDateStat()
*
功能说明:
日中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出: uint32_t 1 日中断发生
0 日中断未发生
*
注意事
项: 无
*
函数名称
: RTC_IntDateStat()
*
功能说明: 日中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 日中断发生 0 日中断未发生
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
RTC_IntDateStat
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -365,11 +365,11 @@ uint32_t RTC_IntDateStat(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmEn()
*
功能说明:
闹钟中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntAlarmEn()
*
功能说明: 闹钟中断使能
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntAlarmEn
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -377,11 +377,11 @@ void RTC_IntAlarmEn(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmDis()
*
功能说明:
闹钟中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntAlarmDis()
*
功能说明: 闹钟中断禁止
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntAlarmDis
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -389,11 +389,11 @@ void RTC_IntAlarmDis(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmClr()
*
功能说明:
闹钟中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: RTC_IntAlarmClr()
*
功能说明: 闹钟中断标志清除
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
RTC_IntAlarmClr
(
RTC_TypeDef
*
RTCx
)
{
...
...
@@ -401,11 +401,11 @@ void RTC_IntAlarmClr(RTC_TypeDef * RTCx)
}
/******************************************************************************************************************************************
* 函数名称: RTC_IntAlarmStat()
*
功能说明:
闹钟中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置
的RTC,可取值包括RTC
*
输 出: uint32_t 1 闹钟中断发生
0 闹钟中断未发生
*
注意事
项: 无
*
函数名称
: RTC_IntAlarmStat()
*
功能说明: 闹钟中断状态
*
输 入: RTC_TypeDef * RTCx 指定要被设置的RTC,可取值包括
RTC
*
输 出: uint32_t 1 闹钟中断发生 0 闹钟中断未发生
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
RTC_IntAlarmStat
(
RTC_TypeDef
*
RTCx
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.h
浏览文件 @
22513fe8
...
...
@@ -13,17 +13,17 @@
typedef
struct
{
uint16_t
Year
;
uint8_t
Month
;
//
取值
1--12
uint8_t
Date
;
//
取值
1--31
uint8_t
Hour
;
//
取值
0--23
uint8_t
Minute
;
//
取值
0--59
uint8_t
Second
;
//
取值
0--59
uint8_t
Month
;
//
取值
1--12
uint8_t
Date
;
//
取值
1--31
uint8_t
Hour
;
//
取值
0--23
uint8_t
Minute
;
//
取值
0--59
uint8_t
Second
;
//
取值
0--59
uint8_t
SecondIEn
;
uint8_t
MinuteIEn
;
}
RTC_InitStructure
;
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
Minute
;
uint8_t
Second
;
...
...
@@ -34,7 +34,7 @@ typedef struct {
uint16_t
Year
;
uint8_t
Month
;
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
Minute
;
uint8_t
Second
;
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文件名称
: SWM320_sdio.c
*
功能说明: SWM320单片机的SDIO接口驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项: 为了通用性、兼容性、易用性,只支持以512字节为单位的读写
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
文件名称:
SWM320_sdio.c
*
功能说明: SWM320单片机的SDIO接口驱动库
*
技术支持:
http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项: 为了通用性、兼容性、易用性,只支持以512字节为单位的读写
*
版本日期: V1.1.0 2017年10月25日
*
升级记录:
*
*
*******************************************************************************************************************************************
...
...
@@ -25,11 +25,11 @@
SD_CardInfo
SD_cardInfo
;
/******************************************************************************************************************************************
*
函数名称
: SDIO_Init()
*
功能说明: SDIO读写SD卡初始化,初始化成高速4线模式、读写以512字节大小进行
*
输 入: uint32_t freq SDIO_CLK时钟频率
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
函数名称:
SDIO_Init()
*
功能说明: SDIO读写SD卡初始化,初始化成高速4线模式、读写以512字节大小进行
*
输 入: uint32_t freq SDIO_CLK时钟频率
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SDIO_Init
(
uint32_t
freq
)
{
...
...
@@ -37,7 +37,7 @@ uint32_t SDIO_Init(uint32_t freq)
uint32_t
resp
,
resps
[
4
];
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
else
SYS
->
CLKDIV
|=
(
1
<<
SYS_CLKDIV_SDIO_Pos
);
//SDCLK = SYSCLK / 2
...
...
@@ -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
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
)
return
res
;
...
...
@@ -77,50 +77,50 @@ uint32_t SDIO_Init(uint32_t freq)
if
(
res
!=
SD_RES_OK
)
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
)
SDIO_SendCmd
(
SD_CMD_SD_APP_OP_COND
,
0x80100000
|
0x40000000
,
SD_RESP_32b
,
&
resp
);
else
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
;
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
);
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
;
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
);
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
|=
(
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_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_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
;
...
...
@@ -128,12 +128,12 @@ uint32_t SDIO_Init(uint32_t freq)
}
/******************************************************************************************************************************************
*
函数名称
: SDIO_BlockWrite()
*
功能说明: 向SD卡写入数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint32_t buff[]
要写入的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
函数名称:
SDIO_BlockWrite()
*
功能说明: 向SD卡写入数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint32_t buff[]
要写入的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SDIO_BlockWrite
(
uint32_t
block_addr
,
uint32_t
buff
[])
{
...
...
@@ -159,13 +159,13 @@ uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
}
/******************************************************************************************************************************************
*
函数名称
: SDIO_MultiBlockWrite()
*
功能说明: 向SD卡写入多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要写入的块数
* uint32_t buff[]
要写入的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
函数名称:
SDIO_MultiBlockWrite()
*
功能说明: 向SD卡写入多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要写入的块数
* uint32_t buff[]
要写入的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
******************************************************************************************************************************************/
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
}
/******************************************************************************************************************************************
*
函数名称
: SDIO_DMABlockWrite()
*
功能说明: 通过DMA向SD卡写入多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要写入的块数
* uint32_t buff[]
要写入的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
函数名称:
SDIO_DMABlockWrite()
*
功能说明: 通过DMA向SD卡写入多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要写入的块数
* uint32_t buff[]
要写入的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
******************************************************************************************************************************************/
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
}
/******************************************************************************************************************************************
*
函数名称
: SDIO_BlockRead()
*
功能说明: 从SD卡读出数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint32_t buff[]
读出的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
函数名称:
SDIO_BlockRead()
*
功能说明: 从SD卡读出数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint32_t buff[]
读出的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SDIO_BlockRead
(
uint32_t
block_addr
,
uint32_t
buff
[])
{
...
...
@@ -254,13 +254,13 @@ uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
}
/******************************************************************************************************************************************
*
函数名称
: SDIO_MultiBlockRead()
*
功能说明: 从SD卡读出多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要读出的块数
* uint32_t buff[]
读出的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
函数名称:
SDIO_MultiBlockRead()
*
功能说明: 从SD卡读出多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要读出的块数
* uint32_t buff[]
读出的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
******************************************************************************************************************************************/
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
}
/******************************************************************************************************************************************
*
函数名称
: SDIO_DMABlockRead()
*
功能说明: 通过DMA从SD卡读出多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要读出的块数
* uint32_t buff[]
读出的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
函数名称:
SDIO_DMABlockRead()
*
功能说明: 通过DMA从SD卡读出多块数据
*
输 入: uint32_t block_addr SD卡块地址,每块512字节
* uint16_t block_cnt
要读出的块数
* uint32_t buff[]
读出的数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
******************************************************************************************************************************************/
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
}
/******************************************************************************************************************************************
*
函数名称
: _SDIO_SendCmd()
*
功能说明: SDIO向SD卡发送命令
*
输 入: uint32_t cmd 命令索引
* uint32_t arg
命令参数
* uint32_t
_resp_type 响应类型,取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、S
D_RESP_32b_busy
* uint32_t *resp_data
响应内容
* uint32_t have_data
是否有数据传输
* uint32_t data_read 1
读SD卡 0 写SD卡
* uint16_t block_cnt
读写块个数
* uint32_t use_dma 1
使用DMA搬运数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
*
函数名称:
_SDIO_SendCmd()
*
功能说明: SDIO向SD卡发送命令
*
输 入: uint32_t cmd 命令索引
* uint32_t arg
命令参数
* uint32_t
resp_type 响应类型,取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、SD_R
ESP_32b_busy
* uint32_t *resp_data
响应内容
* uint32_t have_data
是否有数据传输
* uint32_t data_read 1
读SD卡 0 写SD卡
* uint16_t block_cnt
读写块个数
* uint32_t use_dma 1
使用DMA搬运数据
*
输 出: uint32_t SD_RES_OK 操作成功 SD_RES_ERR 操作失败 SD_RES_TIMEOUT 操作超时
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
_SDIO_SendCmd
(
uint32_t
cmd
,
uint32_t
arg
,
uint32_t
_
resp_type
,
uint32_t
*
resp_data
,
uint32_t
have_data
,
uint32_t
data_read
,
uint16_t
block_cnt
,
uint32_t
use_dma
)
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
|=
(
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
(
0
<<
SDIO_CMD_CMDTYPE_Pos
)
|
(
0
<<
SDIO_CMD_IDXCHECK_Pos
)
|
(
0
<<
SDIO_CMD_CRCCHECK_Pos
)
|
(
_resp_type
<<
SDIO_CMD_RESPTYPE_Pos
)
|
(
resp_type
<<
SDIO_CMD_RESPTYPE_Pos
)
|
(
have_data
<<
SDIO_CMD_HAVEDATA_Pos
)
|
(
data_read
<<
SDIO_CMD_DIRREAD_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
}
SDIO
->
IF
=
SDIO_IF_CMDDONE_Msk
;
if
(
_
resp_type
==
SD_RESP_32b
)
if
(
resp_type
==
SD_RESP_32b
)
{
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]存放在resp_data0-3[127-8],最低8位填充
0x00
//
寄存器中将CID/CSD[127-8]依次存放在了RESP3-0[119-0],最低位的CRC被丢掉
//
读出数据时调整了顺序,将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
[
1
]
=
(
SDIO
->
RESP
[
2
]
<<
8
)
+
((
SDIO
->
RESP
[
1
]
>>
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])
/*!< Byte 10 */
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
;
}
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.h
浏览文件 @
22513fe8
...
...
@@ -35,10 +35,10 @@
#define SD_CMD_SDIO_RW_EXTENDED ((uint8_t)53)
#define SD_RESP_NO 0 //0
无
响应
#define SD_RESP_32b 2 //2 32
位响
应
#define SD_RESP_128b 1 //1 128
位响
应
#define SD_RESP_32b_busy 3 //3 32
位响
应,check Busy after response
#define SD_RESP_NO 0 //0
无响应
#define SD_RESP_32b 2 //2 32
位响应
#define SD_RESP_128b 1 //1 128
位响应
#define SD_RESP_32b_busy 3 //3 32
位响应,
check Busy after response
#define SD_BUSWIDTH_1b 0
#define SD_BUSWIDTH_4b 2
...
...
@@ -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_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_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_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_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
parseCSD
(
uint32_t
CID_Tab
[
4
]);
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_sdram.c
*
功能说明: SWM320单片机
的SDRAM驱动程序
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_sdram.c
*
功能说明: SWM320单片机的SDRAM驱动程序
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
*
*******************************************************************************************************************************************
...
...
@@ -22,11 +22,11 @@
#include "SWM320_sdram.h"
/******************************************************************************************************************************************
* 函数名称: SDRAM_Init()
*
功能说明: SDR
AM控制器初始化
*
输 入: SDRAM_InitStructure * initStruct 包含 SDRAM
控制器相关设定值的结构体
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SDRAM_Init()
*
功能说明: SDRAM控制器初始化
*
输 入: SDRAM_InitStructure * initStruct 包含 SDRAM 控制器相关设定值的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SDRAM_Init
(
SDRAM_InitStructure
*
initStruct
)
{
...
...
@@ -35,9 +35,9 @@ void SDRAM_Init(SDRAM_InitStructure * initStruct)
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_SDRAM_Pos
);
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
);
SDRAMC
->
CR1
=
(
initStruct
->
CellSize
<<
SDRAMC_CR1_CELLSIZE_Pos
)
|
...
...
@@ -69,11 +69,11 @@ void SDRAM_Init(SDRAM_InitStructure * initStruct)
}
/******************************************************************************************************************************************
* 函数名称: SDRAM_Enable()
*
功能说明: SDRAM使能,
使能后可读写SDRAM
*
输 入
: 无
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SDRAM_Enable()
*
功能说明: SDRAM使能,使能后可读写
SDRAM
*
输 入: 无
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SDRAM_Enable
(
void
)
{
...
...
@@ -86,11 +86,11 @@ void SDRAM_Enable(void)
}
/******************************************************************************************************************************************
* 函数名称: SDRAM_Disable()
*
功能说明: SDRAM禁能,禁能后SDRAM
颗粒进入低功耗模式、并自刷新,不可读写
*
输 入
: 无
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SDRAM_Disable()
*
功能说明: SDRAM禁能,禁能后SDRAM颗粒进入低功耗模式、并自刷新,不可读写
*
输 入: 无
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SDRAM_Disable
(
void
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.h
浏览文件 @
22513fe8
...
...
@@ -2,17 +2,17 @@
#define __SWM320_SDRAM_H__
typedef
struct
{
uint8_t
CellSize
;
// SDRAM
颗粒的容量,SDRAM_CELLSIZE_16Mb、SDRAM_CELLSIZE_64Mb、SDRAM_CELLSIZE_128Mb、S
DRAM_CELLSIZE_256Mb
uint8_t
CellBank
;
// SDRAM
颗粒有几个bank,SDRAM_CELLBANK_2、S
DRAM_CELLBANK_4
uint8_t
CellWidth
;
// SDRAM
颗粒的位宽,SDRAM_CELLWIDTH_16、S
DRAM_CELLWIDTH_32
uint8_t
CASLatency
;
//
列地址到有效数据输出间隔,SDRAM_CASLATENCY_2、S
DRAM_CASLATENCY_3
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、SDR
AM_CELLBANK_4
uint8_t
CellWidth
;
// SDRAM
颗粒的位宽,SDRAM_CELLWIDTH_16、SDRA
M_CELLWIDTH_32
uint8_t
CASLatency
;
//
列地址到有效数据输出间隔,SDRAM_CASLATENCY_2、SDRAM_C
ASLATENCY_3
uint8_t
TimeTMRD
;
// MRS to New Command
uint8_t
TimeTRRD
;
// Activate to activate on different banks
uint8_t
TimeTRAS
;
// Self refresh time
,最小Self-refresh周期
uint8_t
TimeTRC
;
// Row cycle delay
,Refresh命令到Activate命令间延时,也是两个连续Refresh命令间延时
uint8_t
TimeTRCD
;
// Row to column delay
,行地址到列地址间延时,也即Activate命令到读写命令间延时
uint8_t
TimeTRP
;
// Row precharge delay
,Precharge命令到另一个命令间延时
uint8_t
TimeTRAS
;
// Self refresh time
,最小Self-refresh周期
uint8_t
TimeTRC
;
// Row cycle delay
,Refresh命令到Activate命令间延时,也是两个连续Refresh命令间延时
uint8_t
TimeTRCD
;
// Row to column delay
,行地址到列地址间延时,也即Activate命令到读写命令间延时
uint8_t
TimeTRP
;
// Row precharge delay
,Precharge命令到另一个命令间延时
}
SDRAM_InitStructure
;
#define SDRAM_CELLSIZE_16Mb 3
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_spi.c
*
功能说明: SWM320单
片机的SPI功能驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_spi.c
*
功能说明: SWM320单片机的SPI功能驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
*
*******************************************************************************************************************************************
...
...
@@ -23,12 +23,12 @@
/******************************************************************************************************************************************
* 函数名称: SPI_Init()
*
功能说明: SPI同步串行接口初始化,包括帧长度
设定、时序设定、速度设定、中断设定、FIFO触发设定
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
* SPI_InitStructure * initStruct
包含SPI相关
设定值的结构体
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_Init()
*
功能说明: SPI同步串行接口初始化,包括帧长度设定、时序设定、速度设定、中断设定、FIFO触发设定
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
* SPI_InitStructure * initStruct
包含SPI相关设定值的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_Init
(
SPI_TypeDef
*
SPIx
,
SPI_InitStructure
*
initStruct
)
{
...
...
@@ -39,11 +39,11 @@ void SPI_Init(SPI_TypeDef * SPIx, SPI_InitStructure * initStruct)
break
;
case
((
uint32_t
)
SPI1
):
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_SPI0_Pos
);
//
与SPI0使用同一位
时钟使能
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_SPI0_Pos
);
//
与SPI0使用同一位时钟使能
break
;
}
SPI_Close
(
SPIx
);
//
一些关键寄存器只能在
SPI关闭时设置
SPI_Close
(
SPIx
);
//
一些关键寄存器只能在SPI关闭时设置
SPIx
->
CTRL
&=
~
(
SPI_CTRL_FFS_Msk
|
SPI_CTRL_CPHA_Msk
|
SPI_CTRL_CPOL_Msk
|
SPI_CTRL_SIZE_Msk
|
SPI_CTRL_MSTR_Msk
|
SPI_CTRL_CLKDIV_Msk
|
SPI_CTRL_SSN_H_Msk
);
...
...
@@ -55,7 +55,7 @@ void SPI_Init(SPI_TypeDef * SPIx, SPI_InitStructure * initStruct)
(
initStruct
->
clkDiv
<<
SPI_CTRL_CLKDIV_Pos
)
|
(
0
<<
SPI_CTRL_SSN_H_Pos
);
SPIx
->
IF
=
(
0x01
<<
SPI_IF_RFOVF_Pos
);
//
清除中
断标志
SPIx
->
IF
=
(
0x01
<<
SPI_IF_RFOVF_Pos
);
//
清除中断标志
SPIx
->
IE
&=
~
(
SPI_IE_RFHF_Msk
|
SPI_IE_TFHF_Msk
|
SPI_IE_FTC_Msk
);
SPIx
->
IE
|=
(
initStruct
->
RXHFullIEn
<<
SPI_IE_RFHF_Pos
)
|
(
initStruct
->
TXEmptyIEn
<<
SPI_IE_TFHF_Pos
)
|
...
...
@@ -88,11 +88,11 @@ void SPI_Init(SPI_TypeDef * SPIx, SPI_InitStructure * initStruct)
}
/******************************************************************************************************************************************
* 函数名称: SPI_Open()
*
功能说明: SP
I打开,允许收发
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_Open()
*
功能说明: SPI打开,允许收发
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_Open
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -100,11 +100,11 @@ void SPI_Open(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_Close()
*
功能说明: SPI关
闭,禁止收发
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_Close()
*
功能说明: SPI关闭,禁止收发
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_Close
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -112,11 +112,11 @@ void SPI_Close(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_Read()
*
功能说明:
读取一个数据
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t
读取到的数据
*
注意事
项: 无
*
函数名称
: SPI_Read()
*
功能说明: 读取一个数据
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 读取到的数据
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_Read
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -124,12 +124,12 @@ uint32_t SPI_Read(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_Write()
*
功能说明:
写入一个数据
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
* uint32_t
要写
入的数据
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_Write()
*
功能说明: 写入一个数据
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
* uint32_t
要写入的数据
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_Write
(
SPI_TypeDef
*
SPIx
,
uint32_t
data
)
{
...
...
@@ -137,12 +137,12 @@ void SPI_Write(SPI_TypeDef * SPIx, uint32_t data)
}
/******************************************************************************************************************************************
* 函数名称: SPI_WriteWithWait()
*
功能说明: 写入一个
数据并等待数据完全发送出去
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值
包括SPI0、SPI1、SPI1
* uint32_t
要写
入的数据
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_WriteWithWait()
*
功能说明: 写入一个数据并等待数据完全发送出去
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、SPI1、
SPI1
* uint32_t
要写入的数据
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_WriteWithWait
(
SPI_TypeDef
*
SPIx
,
uint32_t
data
)
{
...
...
@@ -154,12 +154,12 @@ void SPI_WriteWithWait(SPI_TypeDef * SPIx, uint32_t data)
}
/******************************************************************************************************************************************
* 函数名称: SPI_ReadWrite()
*
功能说明: 发送一
个数据,并返回发送过程中接收到的
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
* uint32_t data
要发
送的数据
*
输 出: uint32_t
接收到的数据
*
注意事项: 对于同一个SPI模块,此函数不应与SPI_Write()混着用,因为SPI_Write()
不清除SPI_STAT_RFNE状态
*
函数名称
: SPI_ReadWrite()
*
功能说明: 发送一个数据,并返回发送过程中接收到的
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
* uint32_t data
要发送的数据
*
输 出: uint32_t 接收到的数据
*
注意事项: 对于同一个SPI模块,此函数不应与SPI_Write()混着用,因为SPI_Write()不清除SPI_STAT_RFNE状态
******************************************************************************************************************************************/
uint32_t
SPI_ReadWrite
(
SPI_TypeDef
*
SPIx
,
uint32_t
data
)
{
...
...
@@ -170,11 +170,11 @@ uint32_t SPI_ReadWrite(SPI_TypeDef * SPIx, uint32_t data)
}
/******************************************************************************************************************************************
* 函数名称: SPI_IsRXEmpty()
*
功能说明: 接收FI
FO是否空,如果不空则可以继续SPI_Read()
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 接收FIFO空 0
接收FIFO非空
*
注意事
项: 无
*
函数名称
: SPI_IsRXEmpty()
*
功能说明: 接收FIFO是否空,如果不空则可以继续
SPI_Read()
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 接收FIFO空 0 接收FIFO非空
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_IsRXEmpty
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -182,11 +182,11 @@ uint32_t SPI_IsRXEmpty(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_IsTXFull()
*
功能说明: 发送F
IFO是否满,如果不满则可以继续SPI_Write()
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 发送FIFO满 0
发送FIFO不满
*
注意事
项: 无
*
函数名称
: SPI_IsTXFull()
*
功能说明: 发送FIFO是否满,如果不满则可以继续
SPI_Write()
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 发送FIFO满 0 发送FIFO不满
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_IsTXFull
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -194,11 +194,11 @@ uint32_t SPI_IsTXFull(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_IsTXEmpty()
*
功能说明: 发送
FIFO是否空
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 发送FIFO空 0
发送FIFO非空
*
注意事
项: 无
*
函数名称
: SPI_IsTXEmpty()
*
功能说明: 发送FIFO是否空
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 发送FIFO空 0 发送FIFO非空
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_IsTXEmpty
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -207,11 +207,11 @@ uint32_t SPI_IsTXEmpty(SPI_TypeDef * SPIx)
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXHalfFullEn()
*
功能说明: 接收F
IFO半满中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTRXHalfFullEn()
*
功能说明: 接收FIFO半满中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTRXHalfFullEn
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -219,11 +219,11 @@ void SPI_INTRXHalfFullEn(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXHalfFullDis()
*
功能说明: 接收FI
FO半满中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTRXHalfFullDis()
*
功能说明: 接收FIFO半满中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTRXHalfFullDis
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -231,11 +231,11 @@ void SPI_INTRXHalfFullDis(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXHalfFullClr()
*
功能说明: 接收FI
FO半满中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTRXHalfFullClr()
*
功能说明: 接收FIFO半满中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTRXHalfFullClr
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -243,11 +243,11 @@ void SPI_INTRXHalfFullClr(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXHalfFullStat()
*
功能说明: 接收FI
FO半满中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 接收FIFO达到半满 0
接收FIFO未达到半满
*
注意事
项: 无
*
函数名称
: SPI_INTRXHalfFullStat()
*
功能说明: 接收FIFO半满中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 接收FIFO达到半满 0 接收FIFO未达到半满
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_INTRXHalfFullStat
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -255,11 +255,11 @@ uint32_t SPI_INTRXHalfFullStat(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXFullEn()
*
功能说明: 接收F
IFO满中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTRXFullEn()
*
功能说明: 接收FIFO满中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTRXFullEn
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -267,11 +267,11 @@ void SPI_INTRXFullEn(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXFullDis()
*
功能说明: 接收FI
FO满中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTRXFullDis()
*
功能说明: 接收FIFO满中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTRXFullDis
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -279,11 +279,11 @@ void SPI_INTRXFullDis(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXFullClr()
*
功能说明: 接收FI
FO满中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTRXFullClr()
*
功能说明: 接收FIFO满中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTRXFullClr
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -291,11 +291,11 @@ void SPI_INTRXFullClr(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXFullStat()
*
功能说明: 接收FI
FO满中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 接收FIFO满 0
接收FIFO未满
*
注意事
项: 无
*
函数名称
: SPI_INTRXFullStat()
*
功能说明: 接收FIFO满中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 接收FIFO满 0 接收FIFO未满
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_INTRXFullStat
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -303,11 +303,11 @@ uint32_t SPI_INTRXFullStat(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXOverflowEn()
*
功能说明: 接收F
IFO溢出中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTRXOverflowEn()
*
功能说明: 接收FIFO溢出中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTRXOverflowEn
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -315,11 +315,11 @@ void SPI_INTRXOverflowEn(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXOverflowDis()
*
功能说明: 接收FI
FO溢出中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTRXOverflowDis()
*
功能说明: 接收FIFO溢出中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTRXOverflowDis
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -327,11 +327,11 @@ void SPI_INTRXOverflowDis(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXOverflowClr()
*
功能说明: 接收FI
FO溢出中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTRXOverflowClr()
*
功能说明: 接收FIFO溢出中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTRXOverflowClr
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -339,11 +339,11 @@ void SPI_INTRXOverflowClr(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTRXOverflowStat()
*
功能说明: 接收FI
FO溢出中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 接收FIFO溢出 0
接收FIFO未溢出
*
注意事
项: 无
*
函数名称
: SPI_INTRXOverflowStat()
*
功能说明: 接收FIFO溢出中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 接收FIFO溢出 0 接收FIFO未溢出
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_INTRXOverflowStat
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -351,11 +351,11 @@ uint32_t SPI_INTRXOverflowStat(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXHalfFullEn()
*
功能说明: 发送F
IFO半满中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXHalfFullEn()
*
功能说明: 发送FIFO半满中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXHalfFullEn
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -363,11 +363,11 @@ void SPI_INTTXHalfFullEn(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXHalfFullDis()
*
功能说明: 发送FI
FO半满中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXHalfFullDis()
*
功能说明: 发送FIFO半满中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXHalfFullDis
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -375,11 +375,11 @@ void SPI_INTTXHalfFullDis(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXHalfFullClr()
*
功能说明: 发送FI
FO半满中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXHalfFullClr()
*
功能说明: 发送FIFO半满中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXHalfFullClr
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -387,11 +387,11 @@ void SPI_INTTXHalfFullClr(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXHalfFullStat()
*
功能说明: 发送FI
FO半满中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 发送FIFO达到半满 0
发送FIFO未达到半满
*
注意事
项: 无
*
函数名称
: SPI_INTTXHalfFullStat()
*
功能说明: 发送FIFO半满中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 发送FIFO达到半满 0 发送FIFO未达到半满
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_INTTXHalfFullStat
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -399,11 +399,11 @@ uint32_t SPI_INTTXHalfFullStat(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXEmptyEn()
*
功能说明: 发送F
IFO空中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXEmptyEn()
*
功能说明: 发送FIFO空中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXEmptyEn
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -411,11 +411,11 @@ void SPI_INTTXEmptyEn(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXEmptyDis()
*
功能说明: 发送FI
FO空中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXEmptyDis()
*
功能说明: 发送FIFO空中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXEmptyDis
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -423,11 +423,11 @@ void SPI_INTTXEmptyDis(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXEmptyClr()
*
功能说明: 发送FI
FO空中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXEmptyClr()
*
功能说明: 发送FIFO空中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXEmptyClr
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -435,11 +435,11 @@ void SPI_INTTXEmptyClr(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXEmptyStat()
*
功能说明: 发送FI
FO空中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 发送FIFO空 0
发送FIFO非空
*
注意事
项: 无
*
函数名称
: SPI_INTTXEmptyStat()
*
功能说明: 发送FIFO空中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 发送FIFO空 0 发送FIFO非空
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_INTTXEmptyStat
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -447,11 +447,11 @@ uint32_t SPI_INTTXEmptyStat(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXCompleteEn()
*
功能说明: 发送FIFO
空且发送移位寄存器空中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXCompleteEn()
*
功能说明: 发送FIFO空且发送移位寄存器空中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXCompleteEn
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -459,11 +459,11 @@ void SPI_INTTXCompleteEn(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXCompleteDis()
*
功能说明: 发送FIFO空
且发送移位寄存器空中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXCompleteDis()
*
功能说明: 发送FIFO空且发送移位寄存器空中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXCompleteDis
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -471,11 +471,11 @@ void SPI_INTTXCompleteDis(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXCompleteClr()
*
功能说明: 发送FIFO空
且发送移位寄存器空中断状态清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXCompleteClr()
*
功能说明: 发送FIFO空且发送移位寄存器空中断状态清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXCompleteClr
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -483,11 +483,11 @@ void SPI_INTTXCompleteClr(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXCompleteStat()
*
功能说明: 发送FIFO空
且发送移位寄存器空中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 发送FIFO空且发送移位寄存器空
0 发送FIFO或发送移位寄存器非空
*
注意事
项: 无
*
函数名称
: SPI_INTTXCompleteStat()
*
功能说明: 发送FIFO空且发送移位寄存器空中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 发送FIFO空且发送移位寄存器空 0 发送FIFO或发送移位寄存器非空
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_INTTXCompleteStat
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -495,11 +495,11 @@ uint32_t SPI_INTTXCompleteStat(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXWordCompleteEn()
*
功能说明: 发送FI
FO字发送完成中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXWordCompleteEn()
*
功能说明: 发送FIFO字发送完成中断使能
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXWordCompleteEn
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -507,11 +507,11 @@ void SPI_INTTXWordCompleteEn(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXWordCompleteDis()
*
功能说明: 发送FIF
O字发送完成中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXWordCompleteDis()
*
功能说明: 发送FIFO字发送完成中断禁止
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXWordCompleteDis
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -519,11 +519,11 @@ void SPI_INTTXWordCompleteDis(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXWordCompleteClr()
*
功能说明: 发送FIF
O字发送完成中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SPI_INTTXWordCompleteClr()
*
功能说明: 发送FIFO字发送完成中断标志清除
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SPI_INTTXWordCompleteClr
(
SPI_TypeDef
*
SPIx
)
{
...
...
@@ -531,11 +531,11 @@ void SPI_INTTXWordCompleteClr(SPI_TypeDef * SPIx)
}
/******************************************************************************************************************************************
* 函数名称: SPI_INTTXWordCompleteStat()
*
功能说明: 发送FIF
O字发送完成中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI
,有效值包括SPI0、SPI1
*
输 出: uint32_t 1 发送完成中断已发
生 0 发送完成中断未发生
*
注意事
项: 无
*
函数名称
: SPI_INTTXWordCompleteStat()
*
功能说明: 发送FIFO字发送完成中断状态
*
输 入: SPI_TypeDef * SPIx 指定要被设置的SPI,有效值包括SPI0、
SPI1
*
输 出: uint32_t 1 发送完成中断已发生 0 发送完成中断未发生
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
SPI_INTTXWordCompleteStat
(
SPI_TypeDef
*
SPIx
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.h
浏览文件 @
22513fe8
...
...
@@ -2,26 +2,26 @@
#define __SWM320_SPI_H__
typedef
struct
{
uint8_t
FrameFormat
;
//
帧格式:SPI_FORMAT_SPI、S
PI_FORMAT_TI_SSI
uint8_t
SampleEdge
;
//
在SPI帧格式下,选择数据采样边沿:SPI_FIRST_EDGE、S
PI_SECOND_EDGE
uint8_t
IdleLevel
;
//
在SPI帧格式下,选择空闲时(无数据传输时)时钟线的电平:SPI_LOW_LEVEL、S
PI_HIGH_LEVEL
uint8_t
WordSize
;
//
字长度, 有效值4
-16
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
FrameFormat
;
//
帧格式:SPI_FORMAT_SPI、SPI
_FORMAT_TI_SSI
uint8_t
SampleEdge
;
//
在SPI帧格式下,选择数据采样边沿:SPI_FIRST_EDGE、SPI_SEC
OND_EDGE
uint8_t
IdleLevel
;
//
在SPI帧格式下,选择空闲时(无数据传输时)时钟线的电平:SPI_LOW_LEVEL、SPI_HIGH_LEVE
L
uint8_t
WordSize
;
//
字长度, 有效值4-
16
uint8_t
Master
;
//1
主机模式 0 从机模式
uint8_t
clkDiv
;
//SPI_CLK = SYS_CLK / clkDiv
,有效值:SPI_CLKDIV_4、SPI_CLKDIV_8、... ... 、SPI
_CLKDIV_512
uint8_t
RXHFullIEn
;
//
接收FIFO半满中断使能
uint8_t
TXEmptyIEn
;
//
发送FIFO 空中断使能
uint8_t
TXCompleteIEn
;
//
发送FIFO 空且发送移位寄存器空中断使能
uint8_t
RXHFullIEn
;
//
接收FIFO半满中断使能
uint8_t
TXEmptyIEn
;
//
发送FIFO 空中断使能
uint8_t
TXCompleteIEn
;
//
发送FIFO 空且发送移位寄存器空中断使能
}
SPI_InitStructure
;
#define SPI_FORMAT_SPI 0 //Motorola SPI
格式
#define SPI_FORMAT_TI_SSI 1 //TI SSI
格式
#define SPI_FORMAT_SPI 0 //Motorola SPI
格式
#define SPI_FORMAT_TI_SSI 1 //TI SSI
格式
#define SPI_FIRST_EDGE 0 //
第一个时钟沿开始采样
#define SPI_SECOND_EDGE 1 //
第二个时钟沿开始采样
#define SPI_FIRST_EDGE 0 //
第一个时钟沿开始采样
#define SPI_SECOND_EDGE 1 //
第二个时钟沿开始采样
#define SPI_LOW_LEVEL 0 //
空闲时时钟线保持低电平
#define SPI_HIGH_LEVEL 1 //
空闲时时钟线保持高电平
#define SPI_LOW_LEVEL 0 //
空闲时时钟线保持低电平
#define SPI_HIGH_LEVEL 1 //
空闲时时钟线保持高电平
#define SPI_CLKDIV_4 0
#define SPI_CLKDIV_8 1
...
...
@@ -34,18 +34,18 @@ typedef struct {
void
SPI_Init
(
SPI_TypeDef
*
SPIx
,
SPI_InitStructure
*
initStruct
);
//SPI
初始化
void
SPI_Open
(
SPI_TypeDef
*
SPIx
);
//SPI
打开,允许收发
void
SPI_Close
(
SPI_TypeDef
*
SPIx
);
//SPI
关闭,禁止收发
void
SPI_Init
(
SPI_TypeDef
*
SPIx
,
SPI_InitStructure
*
initStruct
);
//SPI
初始化
void
SPI_Open
(
SPI_TypeDef
*
SPIx
);
//SPI
打开,允许收发
void
SPI_Close
(
SPI_TypeDef
*
SPIx
);
//SPI
关闭,禁止收发
uint32_t
SPI_Read
(
SPI_TypeDef
*
SPIx
);
void
SPI_Write
(
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_IsRXEmpty
(
SPI_TypeDef
*
SPIx
);
//
接收FIFO是否空,如果不空则可以继续S
PI_Read()
uint32_t
SPI_IsTXFull
(
SPI_TypeDef
*
SPIx
);
//
发送FIFO是否满,如果不满则可以继续S
PI_Write()
uint32_t
SPI_IsTXEmpty
(
SPI_TypeDef
*
SPIx
);
//
发送FIFO是否空
uint32_t
SPI_IsRXEmpty
(
SPI_TypeDef
*
SPIx
);
//
接收FIFO是否空,如果不空则可以继续SPI_Read
()
uint32_t
SPI_IsTXFull
(
SPI_TypeDef
*
SPIx
);
//
发送FIFO是否满,如果不满则可以继续SPI_Wri
te()
uint32_t
SPI_IsTXEmpty
(
SPI_TypeDef
*
SPIx
);
//
发送FIFO是否空
void
SPI_INTRXHalfFullEn
(
SPI_TypeDef
*
SPIx
);
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sram.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_sram.c
*
功能说明: SWM320单片
机的SRAM驱动程序
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_sram.c
*
功能说明: SWM320单片机的SRAM驱动程序
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
*
*******************************************************************************************************************************************
...
...
@@ -23,17 +23,17 @@
/******************************************************************************************************************************************
* 函数名称: SRAM_Init()
*
功能说明: SR
AM控制器初始化
*
输 入: SRAM_InitStructure * initStruct 包含 SRAM
控制器相关设定值的结构体
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: SRAM_Init()
*
功能说明: SRAM控制器初始化
*
输 入: SRAM_InitStructure * initStruct 包含 SRAM 控制器相关设定值的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
SRAM_Init
(
SRAM_InitStructure
*
initStruct
)
{
uint32_t
i
;
//
配置SRAM前需要刷新下
SDRAM控制器
//
配置SRAM前需要刷新下SDRAM控制器
do
{
SYS
->
CLKEN
|=
(
1
<<
SYS_CLKEN_SDRAM_Pos
);
...
...
@@ -49,5 +49,5 @@ void SRAM_Init(SRAM_InitStructure * initStruct)
SRAMC
->
CR
=
(
initStruct
->
ClkDiv
<<
SRAMC_CR_RWTIME_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 @@
#define __SWM320_SRAM_H__
typedef
struct
{
uint8_t
ClkDiv
;
//SRAM_CLKDIV_5...SRAM_CLKDIV_16
,根据SRAM芯片所能跑的最高频率选择合适分频
uint8_t
DataWidth
;
//SRAM_DATAWIDTH_8
、S
RAM_DATAWIDTH_16
uint8_t
ClkDiv
;
//SRAM_CLKDIV_5...SRAM_CLKDIV_16
,根据SRAM芯片所能跑的最高频率选择合适分频
uint8_t
DataWidth
;
//SRAM_DATAWIDTH_8
、S
RAM_DATAWIDTH_16
}
SRAM_InitStructure
;
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_timr.c
*
功能说明: SWM320单
片机的计数器/定时器功能驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_timr.c
*
功能说明: SWM320单片机的计数器/定时器功能驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
*
*******************************************************************************************************************************************
...
...
@@ -23,20 +23,20 @@
/******************************************************************************************************************************************
* 函数名称: TIMR_Init()
*
功能说明: TIMR
定时器/计数器初始化
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,有效值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
* uint32_t mode TIMR_MODE_TIMER
定时器模式 TIMR_MODE_COUNTER
计数器模式
* uint32_t period
定时
/计数周期
* uint32_t int_en
中断
使能
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: TIMR_Init()
*
功能说明: TIMR定时器/计数器初始化
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,有效值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
* uint32_t mode TIMR_MODE_TIMER
定时器模式 TIMR_MODE_COUNTER 计数器模式
* uint32_t period
定时/计数周期
* uint32_t int_en
中断使能
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
TIMR_Init
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
mode
,
uint32_t
period
,
uint32_t
int_en
)
{
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_TIMR_Pos
);
TIMR_Stop
(
TIMRx
);
//
一些关键寄存器只能在
定时器停止时设置
TIMR_Stop
(
TIMRx
);
//
一些关键寄存器只能在定时器停止时设置
TIMRx
->
CTRL
&=
~
TIMR_CTRL_CLKSRC_Msk
;
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
switch
((
uint32_t
)
TIMRx
)
{
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
|=
(
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
}
/******************************************************************************************************************************************
* 函数名称: TIMR_Start()
*
功能说明: 启动定时
器,从初始值开始计时/计数
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: TIMR_Start()
*
功能说明: 启动定时器,从初始值开始计时/计数
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
TIMR_Start
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -108,11 +108,11 @@ void TIMR_Start(TIMR_TypeDef * TIMRx)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_Stop()
*
功能说明:
停止定时器
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: TIMR_Stop()
*
功能说明: 停止定时器
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
TIMR_Stop
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -120,11 +120,11 @@ void TIMR_Stop(TIMR_TypeDef * TIMRx)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_Halt()
*
功能说明: 暂
停定时器,计数值保持不变
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: TIMR_Halt()
*
功能说明: 暂停定时器,计数值保持不变
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
TIMR_Halt
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -157,11 +157,11 @@ void TIMR_Halt(TIMR_TypeDef * TIMRx)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_Resume()
*
功能说明:
恢复定时器,从暂停处继续计数
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: TIMR_Resume()
*
功能说明: 恢复定时器,从暂停处继续计数
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
TIMR_Resume
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -194,12 +194,12 @@ void TIMR_Resume(TIMR_TypeDef * TIMRx)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_SetPeriod()
*
功能说明:
设置定时/计数周期
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
* uint32_t period
定时
/计数周期
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: TIMR_SetPeriod()
*
功能说明: 设置定时/计数周期
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
* 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)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_GetPeriod()
*
功能说明:
获取定时/计数周期
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出: uint32_t 当
前定时/计数周期
*
注意事
项: 无
*
函数名称
: TIMR_GetPeriod()
*
功能说明: 获取定时/计数周期
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: uint32_t 当前定时/计数周期
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
TIMR_GetPeriod
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -219,11 +219,11 @@ uint32_t TIMR_GetPeriod(TIMR_TypeDef * TIMRx)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_GetCurValue()
*
功能说明:
获取当前计数值
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出: uint32_t
当前计数值
*
注意事
项: 无
*
函数名称
: TIMR_GetCurValue()
*
功能说明: 获取当前计数值
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: uint32_t 当前计数值
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
TIMR_GetCurValue
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -231,11 +231,11 @@ uint32_t TIMR_GetCurValue(TIMR_TypeDef * TIMRx)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_INTEn()
*
功能说明:
使能中断
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: TIMR_INTEn()
*
功能说明: 使能中断
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
TIMR_INTEn
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -274,11 +274,11 @@ void TIMR_INTEn(TIMR_TypeDef * TIMRx)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_INTDis()
*
功能说明
: 禁能中断
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: TIMR_INTDis()
*
功能说明: 禁能中断
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
TIMR_INTDis
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -311,11 +311,11 @@ void TIMR_INTDis(TIMR_TypeDef * TIMRx)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_INTClr()
*
功能说明:
清除中断标志
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: TIMR_INTClr()
*
功能说明: 清除中断标志
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
TIMR_INTClr
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -348,11 +348,11 @@ void TIMR_INTClr(TIMR_TypeDef * TIMRx)
}
/******************************************************************************************************************************************
* 函数名称: TIMR_INTStat()
*
功能说明: 获
取中断状态
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TI
MR2、TIMR3、TIMR4、TIMR5
*
输 出: uint32_t 0 TIMRx未产生中断 1 T
IMRx产生了中断
*
注意事
项: 无
*
函数名称
: TIMR_INTStat()
*
功能说明: 获取中断状态
*
输 入: TIMR_TypeDef * TIMRx 指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、
TIMR5
*
输 出: uint32_t 0 TIMRx未产生中断 1 TIMRx产生了中断
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
TIMR_INTStat
(
TIMR_TypeDef
*
TIMRx
)
{
...
...
@@ -382,32 +382,32 @@ uint32_t TIMR_INTStat(TIMR_TypeDef * TIMRx)
/******************************************************************************************************************************************
* 函数名称: Pulse_Init()
*
功能说明:
脉宽测量功能初始化
*
输 入: uint32_t pulse PULSE_LOW 测量低脉冲宽度 PU
LSE_HIGH 测量高脉冲宽度
* uint32_t int_en
是否使
能脉冲测量完成中断
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: Pulse_Init()
*
功能说明: 脉宽测量功能初始化
*
输 入: uint32_t pulse PULSE_LOW 测量低脉冲宽度 PULSE_HIGH 测量高脉冲宽度
* uint32_t int_en
是否使能脉冲测量完成中断
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
Pulse_Init
(
uint32_t
pulse
,
uint32_t
int_en
)
{
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
)
|
(
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
);
}
/******************************************************************************************************************************************
* 函数名称: Pulse_Start()
*
功能说明:
脉宽测量功能启动,测量到脉宽后会自动关闭测量功能
*
输 入
: 无
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: Pulse_Start()
*
功能说明: 脉宽测量功能启动,测量到脉宽后会自动关闭测量功能
*
输 入: 无
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
Pulse_Start
(
void
)
{
...
...
@@ -415,17 +415,17 @@ void Pulse_Start(void)
}
/******************************************************************************************************************************************
* 函数名称: Pulse_Done()
*
功能说明
: 脉宽测量是否完成
*
输 入
: 无
*
输 出: uint32_t 1 测量已完成
0 测量未完成
*
注意事
项: 无
*
函数名称
: Pulse_Done()
*
功能说明: 脉宽测量是否完成
*
输 入: 无
*
输 出: uint32_t 1 测量已完成 0 测量未完成
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
Pulse_Done
(
void
)
{
if
(
TIMRG
->
IF
&
TIMRG_IF_PULSE_Msk
)
{
TIMRG
->
IF
=
TIMRG_IF_PULSE_Msk
;
//
清除中
断标志
TIMRG
->
IF
=
TIMRG_IF_PULSE_Msk
;
//
清除中断标志
return
1
;
}
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.h
浏览文件 @
22513fe8
...
...
@@ -4,20 +4,20 @@
#define TIMR_MODE_TIMER 0
#define TIMR_MODE_COUNTER 1
void
TIMR_Init
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
mode
,
uint32_t
period
,
uint32_t
int_en
);
//
定时器/计数器初始化
void
TIMR_Start
(
TIMR_TypeDef
*
TIMRx
);
//
启动定时器,从初始值开始计时/计数
void
TIMR_Stop
(
TIMR_TypeDef
*
TIMRx
);
//
停止定时器
void
TIMR_Halt
(
TIMR_TypeDef
*
TIMRx
);
//
暂停定时器,计数值保持不变
void
TIMR_Resume
(
TIMR_TypeDef
*
TIMRx
);
//
恢复定时器,从暂停处继续计数
void
TIMR_SetPeriod
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
period
);
//
设置定时/计数周期
uint32_t
TIMR_GetPeriod
(
TIMR_TypeDef
*
TIMRx
);
//
获取定时/计数周期
uint32_t
TIMR_GetCurValue
(
TIMR_TypeDef
*
TIMRx
);
//
获取当前计数值
void
TIMR_INTEn
(
TIMR_TypeDef
*
TIMRx
);
//
使能中断
void
TIMR_INTDis
(
TIMR_TypeDef
*
TIMRx
);
//
禁能中断
void
TIMR_INTClr
(
TIMR_TypeDef
*
TIMRx
);
//
清除中断标志
uint32_t
TIMR_INTStat
(
TIMR_TypeDef
*
TIMRx
);
//
获取中断状态
void
TIMR_Init
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
mode
,
uint32_t
period
,
uint32_t
int_en
);
//
定时器/计数器初始化
void
TIMR_Start
(
TIMR_TypeDef
*
TIMRx
);
//
启动定时器,从初始值开始计时/计数
void
TIMR_Stop
(
TIMR_TypeDef
*
TIMRx
);
//
停止定时器
void
TIMR_Halt
(
TIMR_TypeDef
*
TIMRx
);
//
暂停定时器,计数值保持不变
void
TIMR_Resume
(
TIMR_TypeDef
*
TIMRx
);
//
恢复定时器,从暂停处继续计数
void
TIMR_SetPeriod
(
TIMR_TypeDef
*
TIMRx
,
uint32_t
period
);
//
设置定时/计数周期
uint32_t
TIMR_GetPeriod
(
TIMR_TypeDef
*
TIMRx
);
//
获取定时/计数周期
uint32_t
TIMR_GetCurValue
(
TIMR_TypeDef
*
TIMRx
);
//
获取当前计数值
void
TIMR_INTEn
(
TIMR_TypeDef
*
TIMRx
);
//
使能中断
void
TIMR_INTDis
(
TIMR_TypeDef
*
TIMRx
);
//
禁能中断
void
TIMR_INTClr
(
TIMR_TypeDef
*
TIMRx
);
//
清除中断标志
uint32_t
TIMR_INTStat
(
TIMR_TypeDef
*
TIMRx
);
//
获取中断状态
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_uart.c
*
功能说明: SWM320单片机
的UART串口功能驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项: 没有编写L
IN功能相关的函数
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_uart.c
*
功能说明: SWM320单片机的UART串口功能驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项: 没有编写LIN功能相关的函数
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
*
*******************************************************************************************************************************************
...
...
@@ -23,12 +23,12 @@
/******************************************************************************************************************************************
* 函数名称: UART_Init()
*
功能说明: UAR
T串口初始化
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
* UART_InitStructure * initStruct
包含UART串口
相关设定值的结构体
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_Init()
*
功能说明: UART串口初始化
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
* UART_InitStructure * initStruct
包含UART串口相关设定值的结构体
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_Init
(
UART_TypeDef
*
UARTx
,
UART_InitStructure
*
initStruct
)
{
...
...
@@ -51,7 +51,7 @@ void UART_Init(UART_TypeDef * UARTx, UART_InitStructure * initStruct)
break
;
}
UART_Close
(
UARTx
);
//
一些关键寄存器只能
在串口关闭时设置
UART_Close
(
UARTx
);
//
一些关键寄存器只能在串口关闭时设置
UARTx
->
CTRL
|=
(
0x01
<<
UART_CTRL_BAUDEN_Pos
);
UARTx
->
BAUD
&=
~
UART_BAUD_BAUD_Msk
;
...
...
@@ -62,10 +62,10 @@ void UART_Init(UART_TypeDef * UARTx, UART_InitStructure * initStruct)
(
initStruct
->
Parity
<<
UART_CTRL_PARITY_Pos
)
|
(
initStruct
->
StopBits
<<
UART_CTRL_STOP2b_Pos
);
/*
在SWM320中,当 RXLVL >= RXTHR 时触发中断,如果RXTHR设置为
0的话,在未接收到数据时就会一直触发中断;
其他芯片中,当 RXLVL > RXTHR 时触发中断,为解决SWM320中RXTHR不能为0的问题
,并统一库函数API,这里将RXTHR设置值加一
/*
在SWM320中,当 RXLVL >= RXTHR 时触发中断,如果RXTHR设置为0的话,在未接收到数据时就会一直触发中断;
其他芯片中,当 RXLVL > RXTHR 时触发中断,为解决SWM320中RXTHR不能为0的问题,并统一库函数API,这里将RXTHR设置值加一
*/
switch
((
uint32_t
)
UARTx
)
//
软件复位不能清零 NVIC 寄存器,若不手
动清除,下面的代码清零 RXTHR 时会导致一直进入 ISR
switch
((
uint32_t
)
UARTx
)
//
软件复位不能清零 NVIC 寄存器,若不手动清除,下面的代码清零 RXTHR 时会导致一直进入
ISR
{
case
((
uint32_t
)
UART0
):
NVIC_DisableIRQ
(
UART0_IRQn
);
break
;
case
((
uint32_t
)
UART1
):
NVIC_DisableIRQ
(
UART1_IRQn
);
break
;
...
...
@@ -133,11 +133,11 @@ void UART_Init(UART_TypeDef * UARTx, UART_InitStructure * initStruct)
}
/******************************************************************************************************************************************
* 函数名称: UART_Open()
*
功能说明: UA
RT串口打开
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_Open()
*
功能说明: UART串口打开
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_Open
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -145,11 +145,11 @@ void UART_Open(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_Close()
*
功能说明: UAR
T串口关闭
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_Close()
*
功能说明: UART串口关闭
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_Close
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -157,12 +157,12 @@ void UART_Close(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_WriteByte()
*
功能说明:
发送一个字节数据
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,可取值包括UART0、UAR
T1、UART2、UART3、UART4
* uint32_t data
要发送
的字节
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_WriteByte()
*
功能说明: 发送一个字节数据
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,可取值包括UART0、UART1、UART2、UART3、
UART4
* uint32_t data
要发送的字节
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_WriteByte
(
UART_TypeDef
*
UARTx
,
uint32_t
data
)
{
...
...
@@ -170,12 +170,12 @@ void UART_WriteByte(UART_TypeDef * UARTx, uint32_t data)
}
/******************************************************************************************************************************************
* 函数名称: UART_ReadByte()
*
功能说明: 读取一
个字节数据,并指出数据是否Valid
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,可取值包括UART0、UAR
T1、UART2、UART3、UART4
* uint32_t * data
接
收到的数据
*
输 出: uint32_t 0 无错误 UART_ERR_PARIT
Y 奇偶校验错误
*
注意事
项: 无
*
函数名称
: UART_ReadByte()
*
功能说明: 读取一个字节数据,并指出数据是否
Valid
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,可取值包括UART0、UART1、UART2、UART3、
UART4
* uint32_t * data
接收到的数据
*
输 出: uint32_t 0 无错误 UART_ERR_PARITY 奇偶校验错误
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_ReadByte
(
UART_TypeDef
*
UARTx
,
uint32_t
*
data
)
{
...
...
@@ -189,11 +189,11 @@ uint32_t UART_ReadByte(UART_TypeDef * UARTx, uint32_t * data)
}
/******************************************************************************************************************************************
* 函数名称: UART_IsTXBusy()
*
功能说明: UAR
T是否正在发送数据
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 1 UART正在发送数据
0 数据已发完
*
注意事
项: 无
*
函数名称
: UART_IsTXBusy()
*
功能说明: UART是否正在发送数据
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 1 UART正在发送数据 0 数据已发完
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_IsTXBusy
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -201,11 +201,11 @@ uint32_t UART_IsTXBusy(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_IsRXFIFOEmpty()
*
功能说明: 接收FIFO是否
为空,如果不空则说明其中有数据可以读取
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 1 接收FIFO空 0
接收FIFO非空
*
注意事
项: 无
*
函数名称
: UART_IsRXFIFOEmpty()
*
功能说明: 接收FIFO是否为空,如果不空则说明其中有数据可以读取
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 1 接收FIFO空 0 接收FIFO非空
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_IsRXFIFOEmpty
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -213,11 +213,11 @@ uint32_t UART_IsRXFIFOEmpty(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_IsTXFIFOFull()
*
功能说明: 发送FIF
O是否为满,如果不满则可以继续向其中写入数据
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 1 发送FIFO满 0
发送FIFO不满
*
注意事
项: 无
*
函数名称
: UART_IsTXFIFOFull()
*
功能说明: 发送FIFO是否为满,如果不满则可以继续向其中写入数据
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 1 发送FIFO满 0 发送FIFO不满
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_IsTXFIFOFull
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -225,12 +225,12 @@ uint32_t UART_IsTXFIFOFull(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_SetBaudrate()
*
功能说明
: 设置波特率
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
* uint32_t baudrate
要设置
的波特率
*
输 出
: 无
*
注意事项: 不要在串口工作时更改波特率,使用此函数前请先
调用UART_Close()关闭串口
*
函数名称
: UART_SetBaudrate()
*
功能说明: 设置波特率
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
* uint32_t baudrate
要设置的波特率
*
输 出: 无
*
注意事项: 不要在串口工作时更改波特率,使用此函数前请先调用UART_Close()关闭串口
******************************************************************************************************************************************/
void
UART_SetBaudrate
(
UART_TypeDef
*
UARTx
,
uint32_t
baudrate
)
{
...
...
@@ -239,11 +239,11 @@ void UART_SetBaudrate(UART_TypeDef * UARTx, uint32_t baudrate)
}
/******************************************************************************************************************************************
* 函数名称: UART_GetBaudrate()
*
功能说明
: 查询波特率
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t
当前波特率
*
注意事
项: 无
*
函数名称
: UART_GetBaudrate()
*
功能说明: 查询波特率
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 当前波特率
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_GetBaudrate
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -251,13 +251,13 @@ uint32_t UART_GetBaudrate(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_CTSConfig()
*
功能说明: UART
CTS流控配置
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
* uint32_t enable 1
使能CTS流控 0 禁
止CTS流控
* uint32_t polarity 0 CTS
输入为低表示可以发送数据 1
CTS输入为高表示可以发送数据
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_CTSConfig()
*
功能说明: UART CTS流控配置
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
* uint32_t enable 1
使能CTS流控 0 禁止CTS流控
* uint32_t polarity 0 CTS
输入为低表示可以发送数据 1 CTS输入为高表示可以发送数据
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_CTSConfig
(
UART_TypeDef
*
UARTx
,
uint32_t
enable
,
uint32_t
polarity
)
{
...
...
@@ -267,11 +267,11 @@ void UART_CTSConfig(UART_TypeDef * UARTx, uint32_t enable, uint32_t polarity)
}
/******************************************************************************************************************************************
* 函数名称: UART_CTSLineState()
*
功能说明: UART CTS线
当前状态
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 0 CTS线当前为低电平 1 CTS线
当前为高电平
*
注意事
项: 无
*
函数名称
: UART_CTSLineState()
*
功能说明: UART CTS线当前状态
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 0 CTS线当前为低电平 1 CTS线当前为高电平
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_CTSLineState
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -279,14 +279,14 @@ uint32_t UART_CTSLineState(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_RTSConfig()
*
功能说明: UART
RTS流控配置
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
* uint32_t enable 1
使能RTS流控 0 禁
止RTS流控
* uint32_t polarity 0 RTS
输出低表示可以接收数据
1 RTS输出高表示可以接收数据
* uint32_t threshold RTS
流控的触发阈值,可取值UART_RTS_1BYTE、UART_RTS_2BYTE、UART_R
TS_4BYTE、UART_RTS_6BYTE
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_RTSConfig()
*
功能说明: UART RTS流控配置
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
* uint32_t enable 1
使能RTS流控 0 禁止RTS流控
* uint32_t polarity 0 RTS
输出低表示可以接收数据 1 RTS输出高表示可以接收数据
* uint32_t threshold RTS
流控的触发阈值,可取值UART_RTS_1BYTE、UART_RTS_2BYTE、UART_RTS_4BYTE、
UART_RTS_6BYTE
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_RTSConfig
(
UART_TypeDef
*
UARTx
,
uint32_t
enable
,
uint32_t
polarity
,
uint32_t
threshold
)
{
...
...
@@ -297,11 +297,11 @@ void UART_RTSConfig(UART_TypeDef * UARTx, uint32_t enable, uint32_t polarity, ui
}
/******************************************************************************************************************************************
* 函数名称: UART_RTSLineState()
*
功能说明: UART RTS线
当前状态
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 0 RTS线当前为低电平 1 RTS线
当前为高电平
*
注意事
项: 无
*
函数名称
: UART_RTSLineState()
*
功能说明: UART RTS线当前状态
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 0 RTS线当前为低电平 1 RTS线当前为高电平
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_RTSLineState
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -309,13 +309,13 @@ uint32_t UART_RTSLineState(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_LINConfig()
*
功能说明: UART
LIN功能配置
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
* uint32_t detectedIEn
检测到Break
中断使能
* uint32_t generatedIEn Break
发送
完成中断使能
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_LINConfig()
*
功能说明: UART LIN功能配置
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
* uint32_t detectedIEn
检测到Break中断使能
* uint32_t generatedIEn Break
发送完成中断使能
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_LINConfig
(
UART_TypeDef
*
UARTx
,
uint32_t
detectedIEn
,
uint32_t
generatedIEn
)
{
...
...
@@ -325,11 +325,11 @@ void UART_LINConfig(UART_TypeDef * UARTx, uint32_t detectedIEn, uint32_t generat
}
/******************************************************************************************************************************************
* 函数名称: UART_LINGenerate()
*
功能说明: UART L
IN产生/发送Break
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_LINGenerate()
*
功能说明: UART LIN产生/发送
Break
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_LINGenerate
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -337,11 +337,11 @@ void UART_LINGenerate(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_LINIsDetected()
*
功能说明: UART LI
N是否检测到Break
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 1 检测到LIN Break
0 未检测到LIN Break
*
注意事
项: 无
*
函数名称
: UART_LINIsDetected()
*
功能说明: UART LIN是否检测到
Break
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 1 检测到LIN Break 0 未检测到
LIN Break
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_LINIsDetected
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -349,11 +349,11 @@ uint32_t UART_LINIsDetected(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_LINIsGenerated()
*
功能说明: UART LIN Bre
ak是否发送完成
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 1 LIN Break 发送完成 0 LIN
Break发送未完成
*
注意事
项: 无
*
函数名称
: UART_LINIsGenerated()
*
功能说明: UART LIN Break是否发送完成
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 1 LIN Break 发送完成 0 LIN Break发送未完成
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_LINIsGenerated
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -361,14 +361,14 @@ uint32_t UART_LINIsGenerated(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_ABRStart()
*
功能说明: UART 自
动波特率检测开始
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
* uint32_t detectChar
用于自动检测
、计算波特率的检测字符
* 8
位数据时可取值:0xFF、0xFE、0xF8、0x80,分别表示发送方必
须发送0xFF、0xFE、0xF8、0x80
* 9
位数据时可取值:0x1FF、0x1FE、0x1F8、0x180,分别表示发送方必须发送
0x1FF、0x1FE、0x1F8、0x180
*
输 出
: 无
*
注意事项: 自动波
特率检测时不能开启奇偶校验
*
函数名称
: UART_ABRStart()
*
功能说明: UART 自动波特率检测开始
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
* uint32_t detectChar
用于自动检测、计算波特率的检测字符
* 8
位数据时可取值:0xFF、0xFE、0xF8、0x80,分别表示发送方必须发送0xFF、0xFE、0xF8、
0x80
* 9
位数据时可取值:0x1FF、0x1FE、0x1F8、0x180,分别表示发送方必须发送0x1FF、0x1FE、0x1F8、
0x180
*
输 出: 无
*
注意事项: 自动波特率检测时不能开启奇偶校验
******************************************************************************************************************************************/
void
UART_ABRStart
(
UART_TypeDef
*
UARTx
,
uint32_t
detectChar
)
{
...
...
@@ -386,11 +386,11 @@ void UART_ABRStart(UART_TypeDef * UARTx, uint32_t detectChar)
}
/******************************************************************************************************************************************
* 函数名称: UART_ABRIsDone()
*
功能说明: UART
自动波特率是否完成
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 0 未完成 UART_ABR_RES_OK 已完成,且成功 UART_ABR_RES
_ERR 已完成,但失败、出错
*
注意事
项: 无
*
函数名称
: UART_ABRIsDone()
*
功能说明: UART 自动波特率是否完成
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 0 未完成 UART_ABR_RES_OK 已完成,且成功 UART_ABR_RES_ERR 已完成,但失败、出错
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_ABRIsDone
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -409,11 +409,11 @@ uint32_t UART_ABRIsDone(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTRXThresholdEn()
*
功能说明: 当RX FIFO中数据个数 >= RXThre
shold时 触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_INTRXThresholdEn()
*
功能说明: 当RX FIFO中数据个数 >= RXThreshold时 触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_INTRXThresholdEn
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -421,11 +421,11 @@ void UART_INTRXThresholdEn(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTRXThresholdDis()
*
功能说明: 当RX FIFO中数据个数 >= RXThre
shold时 不触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_INTRXThresholdDis()
*
功能说明: 当RX FIFO中数据个数 >= RXThreshold时 不触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_INTRXThresholdDis
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -433,11 +433,11 @@ void UART_INTRXThresholdDis(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTRXThresholdStat()
*
功能说明: 是否RX F
IFO中数据个数 >= RXThreshold
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 1 RX FIFO中数据个数 >= RXThreshold 0 RX
FIFO中数据个数 < RXThreshold
*
注
意事项: RXIF = RXTHRF & RXIE
*
函数名称
: UART_INTRXThresholdStat()
*
功能说明: 是否RX FIFO中数据个数
>= RXThreshold
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 1 RX FIFO中数据个数 >= RXThreshold 0 RX FIFO中数据个数
< RXThreshold
*
注意事项
: RXIF = RXTHRF & RXIE
******************************************************************************************************************************************/
uint32_t
UART_INTRXThresholdStat
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -445,11 +445,11 @@ uint32_t UART_INTRXThresholdStat(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTTXThresholdEn()
*
功能说明: 当TX FIFO中数据个数 <= TXThre
shold时 触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_INTTXThresholdEn()
*
功能说明: 当TX FIFO中数据个数 <= TXThreshold时 触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_INTTXThresholdEn
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -457,11 +457,11 @@ void UART_INTTXThresholdEn(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTTXThresholdDis()
*
功能说明: 当TX FIFO中数据个数 <= TXThre
shold时 不触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_INTTXThresholdDis()
*
功能说明: 当TX FIFO中数据个数 <= TXThreshold时 不触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_INTTXThresholdDis
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -469,11 +469,11 @@ void UART_INTTXThresholdDis(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTTXThresholdStat()
*
功能说明: 是否TX F
IFO中数据个数 <= TXThreshold
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 1 TX FIFO中数据个数 <= TXThreshold 0 TX
FIFO中数据个数 > TXThreshold
*
注
意事项: TXIF = TXTHRF & TXIE
*
函数名称
: UART_INTTXThresholdStat()
*
功能说明: 是否TX FIFO中数据个数
<= TXThreshold
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 1 TX FIFO中数据个数 <= TXThreshold 0 TX FIFO中数据个数
> TXThreshold
*
注意事项
: TXIF = TXTHRF & TXIE
******************************************************************************************************************************************/
uint32_t
UART_INTTXThresholdStat
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -481,11 +481,11 @@ uint32_t UART_INTTXThresholdStat(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTTimeoutEn()
*
功能说明: 接收
发生超时时 触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_INTTimeoutEn()
*
功能说明: 接收发生超时时 触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_INTTimeoutEn
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -493,11 +493,11 @@ void UART_INTTimeoutEn(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTTimeoutDis()
*
功能说明: 接收
发生超时时 不触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_INTTimeoutDis()
*
功能说明: 接收发生超时时 不触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_INTTimeoutDis
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -505,11 +505,11 @@ void UART_INTTimeoutDis(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTTimeoutStat()
*
功能说明: 是否发生了接收超时,即超过 TimeoutTime/(Baudrate
/10) 秒没有在RX线上接收到数据时触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 1 发生了接收超时
0 未发生接收超时
*
注意事
项: 无
*
函数名称
: UART_INTTimeoutStat()
*
功能说明: 是否发生了接收超时,即超过 TimeoutTime/(Baudrate/10) 秒没有在RX线上接收到数据时触发中断
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 1 发生了接收超时 0 未发生接收超时
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_INTTimeoutStat
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -517,11 +517,11 @@ uint32_t UART_INTTimeoutStat(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTTXDoneEn()
*
功能说明: 发送FIFO
空且发送移位寄存器空中断使能
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_INTTXDoneEn()
*
功能说明: 发送FIFO空且发送移位寄存器空中断使能
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_INTTXDoneEn
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -529,11 +529,11 @@ void UART_INTTXDoneEn(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTTXDoneDis()
*
功能说明: 发送FIFO空
且发送移位寄存器空中断禁止
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: UART_INTTXDoneDis()
*
功能说明: 发送FIFO空且发送移位寄存器空中断禁止
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
UART_INTTXDoneDis
(
UART_TypeDef
*
UARTx
)
{
...
...
@@ -541,11 +541,11 @@ void UART_INTTXDoneDis(UART_TypeDef * UARTx)
}
/******************************************************************************************************************************************
* 函数名称: UART_INTTXDoneStat()
*
功能说明: 发送FIFO空
且发送移位寄存器空中断状态
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART
0、UART1、UART2、UART3
*
输 出: uint32_t 1 发送FIFO空且发送移位寄存器空
0 发送FIFO或发送移位寄存器未空
*
注意事
项: 无
*
函数名称
: UART_INTTXDoneStat()
*
功能说明: 发送FIFO空且发送移位寄存器空中断状态
*
输 入: UART_TypeDef * UARTx 指定要被设置的UART串口,有效值包括UART0、UART1、UART2、
UART3
*
输 出: uint32_t 1 发送FIFO空且发送移位寄存器空 0 发送FIFO或发送移位寄存器未空
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
UART_INTTXDoneStat
(
UART_TypeDef
*
UARTx
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.h
浏览文件 @
22513fe8
...
...
@@ -4,20 +4,20 @@
typedef
struct
{
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
RXThresholdIEn
;
//
当RX FIFO中数据个数 > RXThreshold时触发中断
uint8_t
RXThreshold
;
//
取值
0--7
uint8_t
RXThresholdIEn
;
//
当RX FIFO中数据个数 > RXThreshold时触发中断
uint8_t
TXThreshold
;
//
取值0
--7
uint8_t
TXThresholdIEn
;
//
当TX FIFO中数据个数 <= TXThreshold时触发中断
uint8_t
TXThreshold
;
//
取值
0--7
uint8_t
TXThresholdIEn
;
//
当TX FIFO中数据个数 <= TXThreshold时触发中断
uint8_t
TimeoutTime
;
//
超时时长 = TimeoutTime/(Baudrate/10) 秒
uint8_t
TimeoutIEn
;
//
超时中断,RX FIFO非空,且超过 TimeoutTime/(Baudrate/10) 秒没有在RX线上接收到数据时触发中断
uint8_t
TimeoutTime
;
//
超时时长 = TimeoutTime/(Baudrate/10) 秒
uint8_t
TimeoutIEn
;
//
超时中断,RX FIFO非空,且超过 TimeoutTime/(Baudrate/10) 秒没有在RX线上接收到数据时触发中断
}
UART_InitStructure
;
...
...
@@ -46,20 +46,20 @@ typedef struct {
#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_Close
(
UART_TypeDef
*
UARTx
);
void
UART_WriteByte
(
UART_TypeDef
*
UARTx
,
uint32_t
data
);
//
发送一个字节数据
uint32_t
UART_ReadByte
(
UART_TypeDef
*
UARTx
,
uint32_t
*
data
);
//
读取一个字节数据,并指出数据是否V
alid
void
UART_WriteByte
(
UART_TypeDef
*
UARTx
,
uint32_t
data
);
//
发送一个字节数据
uint32_t
UART_ReadByte
(
UART_TypeDef
*
UARTx
,
uint32_t
*
data
);
//
读取一个字节数据,并指出数据是否Valid
uint32_t
UART_IsTXBusy
(
UART_TypeDef
*
UARTx
);
uint32_t
UART_IsRXFIFOEmpty
(
UART_TypeDef
*
UARTx
);
//
接收FIFO是否空,如果不空则可以继续U
ART_ReadByte()
uint32_t
UART_IsTXFIFOFull
(
UART_TypeDef
*
UARTx
);
//
发送FIFO是否满,如果不满则可以继续U
ART_WriteByte()
uint32_t
UART_IsRXFIFOEmpty
(
UART_TypeDef
*
UARTx
);
//
接收FIFO是否空,如果不空则可以继续UART_Rea
dByte()
uint32_t
UART_IsTXFIFOFull
(
UART_TypeDef
*
UARTx
);
//
发送FIFO是否满,如果不满则可以继续UART_Wr
iteByte()
void
UART_SetBaudrate
(
UART_TypeDef
*
UARTx
,
uint32_t
baudrate
);
//
设置波特率
uint32_t
UART_GetBaudrate
(
UART_TypeDef
*
UARTx
);
//
获取当前使用的波特率
void
UART_SetBaudrate
(
UART_TypeDef
*
UARTx
,
uint32_t
baudrate
);
//
设置波特率
uint32_t
UART_GetBaudrate
(
UART_TypeDef
*
UARTx
);
//
获取当前使用的波特率
void
UART_CTSConfig
(
UART_TypeDef
*
UARTx
,
uint32_t
enable
,
uint32_t
polarity
);
uint32_t
UART_CTSLineState
(
UART_TypeDef
*
UARTx
);
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.c
浏览文件 @
22513fe8
/******************************************************************************************************************************************
*
文
件名称: SWM320_wdt.c
*
功能说明: SWM320单片
机的WDT看门狗功能驱动库
*
技
术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注
意事项:
*
版本日期: V1.1.0 2017年
10月25日
*
升
级记录:
*
文件名称
: SWM320_wdt.c
*
功能说明: SWM320单片机的WDT看门狗功能驱动库
*
技术支持
: http://www.synwit.com.cn/e/tool/gbook/?bid=1
*
注意事项
:
*
版本日期: V1.1.0 2017年10月25日
*
升级记录
:
*
*
*******************************************************************************************************************************************
...
...
@@ -23,19 +23,19 @@
/******************************************************************************************************************************************
* 函数名称: WDT_Init()
*
功能说明: WD
T看门狗初始化
*
输 入: WDT_TypeDef * WDTx 指定要被设
置的看门狗,有效值包括WDT
* uint32_t peroid
取值0--4294967295,单位为单片
机系统时钟周期
* uint32_t mode WDT_MODE_RESET
超时产生复位 WDT_MODE_INTERRUP
T 超时产生中断
*
输 出
: 无
*
注意事项: 复位使能时中断不起作用,因为计
数周期结束时芯片直接复位了,无法响应中断
*
函数名称
: WDT_Init()
*
功能说明: WDT看门狗初始化
*
输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括
WDT
* uint32_t peroid
取值0--4294967295,单位为单片机系统时钟周期
* uint32_t mode WDT_MODE_RESET
超时产生复位 WDT_MODE_INTERRUPT 超时产生中断
*
输 出: 无
*
注意事项: 复位使能时中断不起作用,因为计数周期结束时芯片直接复位了,无法响应中断
******************************************************************************************************************************************/
void
WDT_Init
(
WDT_TypeDef
*
WDTx
,
uint32_t
peroid
,
uint32_t
mode
)
{
SYS
->
CLKEN
|=
(
0x01
<<
SYS_CLKEN_WDT_Pos
);
WDT_Stop
(
WDTx
);
//
设置前
先关闭
WDT_Stop
(
WDTx
);
//
设置前先关闭
WDTx
->
LOAD
=
peroid
;
...
...
@@ -54,11 +54,11 @@ void WDT_Init(WDT_TypeDef * WDTx, uint32_t peroid, uint32_t mode)
}
/******************************************************************************************************************************************
* 函数名称: WDT_Start()
*
功能说明: 启动指
定WDT,开始倒计时
*
输 入: WDT_TypeDef * WDTx 指定要被设
置的看门狗,有效值包括WDT
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: WDT_Start()
*
功能说明: 启动指定WDT,开始倒计时
*
输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括
WDT
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
WDT_Start
(
WDT_TypeDef
*
WDTx
)
{
...
...
@@ -66,11 +66,11 @@ void WDT_Start(WDT_TypeDef * WDTx)
}
/******************************************************************************************************************************************
* 函数名称: WDT_Stop()
*
功能说明: 关闭指定W
DT,停止倒计时
*
输 入: WDT_TypeDef * WDTx 指定要被设
置的看门狗,有效值包括WDT
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: WDT_Stop()
*
功能说明: 关闭指定WDT,停止倒计时
*
输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括
WDT
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
WDT_Stop
(
WDT_TypeDef
*
WDTx
)
{
...
...
@@ -78,11 +78,11 @@ void WDT_Stop(WDT_TypeDef * WDTx)
}
/******************************************************************************************************************************************
* 函数名称: WDT_Feed()
*
功能说明: 喂狗,
重新从装载值开始倒计时
*
输 入: WDT_TypeDef * WDTx 指定要被设
置的看门狗,有效值包括WDT
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: WDT_Feed()
*
功能说明: 喂狗,重新从装载值开始倒计时
*
输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括
WDT
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
WDT_Feed
(
WDT_TypeDef
*
WDTx
)
{
...
...
@@ -90,11 +90,11 @@ void WDT_Feed(WDT_TypeDef * WDTx)
}
/******************************************************************************************************************************************
* 函数名称: WDT_GetValue()
*
功能说明: 获取指定看
门狗定时器的当前倒计时值
*
输 入: WDT_TypeDef * WDTx 指定要被设
置的看门狗,有效值包括WDT
*
输 出: int32_t 看
门狗当前计数值
*
注意事
项: 无
*
函数名称
: WDT_GetValue()
*
功能说明: 获取指定看门狗定时器的当前倒计时值
*
输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括
WDT
*
输 出: int32_t 看门狗当前计数值
*
注意事项: 无
******************************************************************************************************************************************/
int32_t
WDT_GetValue
(
WDT_TypeDef
*
WDTx
)
{
...
...
@@ -102,11 +102,11 @@ int32_t WDT_GetValue(WDT_TypeDef * WDTx)
}
/******************************************************************************************************************************************
* 函数名称: WDT_INTClr()
*
功能说明:
中断标志清除
*
输 入: WDT_TypeDef * WDTx 指定要被设
置的看门狗,有效值包括WDT
*
输 出
: 无
*
注意事
项: 无
*
函数名称
: WDT_INTClr()
*
功能说明: 中断标志清除
*
输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括
WDT
*
输 出: 无
*
注意事项: 无
******************************************************************************************************************************************/
void
WDT_INTClr
(
WDT_TypeDef
*
WDTx
)
{
...
...
@@ -114,11 +114,11 @@ void WDT_INTClr(WDT_TypeDef * WDTx)
}
/******************************************************************************************************************************************
* 函数名称: WDT_INTStat()
*
功能说明: 中
断状态查询
*
输 入: WDT_TypeDef * WDTx 指定要被设
置的看门狗,有效值包括WDT
*
输 出: int32_t 1 发生中断溢出
0 未发生中断溢出
*
注意事
项: 无
*
函数名称
: WDT_INTStat()
*
功能说明: 中断状态查询
*
输 入: WDT_TypeDef * WDTx 指定要被设置的看门狗,有效值包括
WDT
*
输 出: int32_t 1 发生中断溢出 0 未发生中断溢出
*
注意事项: 无
******************************************************************************************************************************************/
uint32_t
WDT_INTStat
(
WDT_TypeDef
*
WDTx
)
{
...
...
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.h
浏览文件 @
22513fe8
...
...
@@ -4,16 +4,16 @@
#define WDT_MODE_RESET 0
#define WDT_MODE_INTERRUPT 1
void
WDT_Init
(
WDT_TypeDef
*
WDTx
,
uint32_t
peroid
,
uint32_t
mode
);
//WDT
看门狗初始化
void
WDT_Start
(
WDT_TypeDef
*
WDTx
);
//
启动指定WDT,开始倒计时
void
WDT_Stop
(
WDT_TypeDef
*
WDTx
);
//
关闭指定WDT,停止倒计时
void
WDT_Init
(
WDT_TypeDef
*
WDTx
,
uint32_t
peroid
,
uint32_t
mode
);
//WDT
看门狗初始化
void
WDT_Start
(
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
);
//
中断标志清除
uint32_t
WDT_INTStat
(
WDT_TypeDef
*
WDTx
);
//
中断状态查询
void
WDT_INTClr
(
WDT_TypeDef
*
WDTx
);
//
中断标志清除
uint32_t
WDT_INTStat
(
WDT_TypeDef
*
WDTx
);
//
中断状态查询
#endif //__SWM320_WDT_H__
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录