Skip to content

Commit 9b9bab5

Browse files
committed
Merge pull request #1229 from Wiznet/mbed_dev2
Change us_ticker - one dual timer + one pwm timer
2 parents bfd1dde + 226d534 commit 9b9bab5

File tree

5 files changed

+368
-54
lines changed

5 files changed

+368
-54
lines changed

libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/TARGET_WIZwiki_W7500/W7500x.h

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,19 +1010,30 @@ typedef struct
10101010
/******************************************************************************/
10111011

10121012
/*********************** Bit definition for dualtimer ***********************/
1013-
#define DUALTIMER_TimerControl_TimerDIsable (0x0ul << 7)
1014-
#define DUALTIMER_TimerControl_TimerEnable (0x1ul << 7)
1015-
#define DUALTIMER_TimerControl_FreeRunning (0x0ul << 6)
1016-
#define DUALTIMER_TimerControl_Periodic (0x1ul << 6)
1017-
#define DUALTIMER_TimerControl_IntDisable (0x0ul << 5)
1018-
#define DUALTIMER_TimerControl_IntEnable (0x1ul << 5)
1019-
#define DUALTIMER_TimerControl_Pre_1 (0x0ul << 2)
1020-
#define DUALTIMER_TimerControl_Pre_16 (0x1ul << 2)
1021-
#define DUALTIMER_TimerControl_Pre_256 (0x2ul << 2)
1022-
#define DUALTIMER_TimerControl_Size_16 (0x0ul << 1)
1023-
#define DUALTIMER_TimerControl_Size_32 (0x1ul << 1)
1024-
#define DUALTIMER_TimerControl_Wrapping (0x0ul << 0)
1025-
#define DUALTIMER_TimerControl_OneShot (0x1ul << 0)
1013+
#define DUALTIMER_TimerControl_TimerDIsable 0x0ul
1014+
#define DUALTIMER_TimerControl_TimerEnable 0x1ul
1015+
#define DUALTIMER_TimerControl_TimerEnable_Pos 7
1016+
1017+
#define DUALTIMER_TimerControl_FreeRunning 0x0ul
1018+
#define DUALTIMER_TimerControl_Periodic 0x1ul
1019+
#define DUALTIMER_TimerControl_TimerMode_Pos 6
1020+
1021+
#define DUALTIMER_TimerControl_IntDisable 0x0ul
1022+
#define DUALTIMER_TimerControl_IntEnable 0x1ul
1023+
#define DUALTIMER_TimerControl_IntEnable_Pos 5
1024+
1025+
#define DUALTIMER_TimerControl_Pre_1 0x0ul
1026+
#define DUALTIMER_TimerControl_Pre_16 0x1ul
1027+
#define DUALTIMER_TimerControl_Pre_256 0x2ul
1028+
#define DUALTIMER_TimerControl_Pre_Pos 2
1029+
1030+
#define DUALTIMER_TimerControl_Size_16 0x0ul
1031+
#define DUALTIMER_TimerControl_Size_32 0x1ul
1032+
#define DUALTIMER_TimerControl_Size_Pos 1
1033+
1034+
#define DUALTIMER_TimerControl_Wrapping 0x0ul
1035+
#define DUALTIMER_TimerControl_OneShot 0x1ul
1036+
#define DUALTIMER_TimerControl_OneShot_Pos 0
10261037

10271038
/******************************************************************************/
10281039
/* */

libraries/mbed/targets/cmsis/TARGET_WIZNET/TARGET_W7500x/W7500x_conf.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "W7500x_uart.h"
55
#include "W7500x_i2c.h"
66
#include "W7500x_adc.h"
7+
#include "W7500x_dualtimer.h"
78
#include "system_W7500x.h"
89

910

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
/**
2+
******************************************************************************
3+
* @file W7500x_stdPeriph_Driver/src/W7500x_dualtimer.c
4+
* @author IOP Team
5+
* @version v1.0.0
6+
* @date 01-May-2015
7+
* @brief This file contains all the functions prototypes for the dualtimer
8+
* firmware library.
9+
******************************************************************************
10+
*
11+
******************************************************************************
12+
*/
13+
14+
/* Includes -------------------------------------------*/
15+
#include "W7500x.h"
16+
17+
void DUALTIMER_ClockEnable(DUALTIMER_TypeDef* DUALTIMERn)
18+
{
19+
/* Check the parameters */
20+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
21+
22+
if(DUALTIMERn == DUALTIMER0_0)
23+
TIMCLKEN0_0 = DUALTIMER_Clock_Enable;
24+
else if(DUALTIMERn == DUALTIMER0_1)
25+
TIMCLKEN0_1 = DUALTIMER_Clock_Enable;
26+
else if(DUALTIMERn == DUALTIMER1_0)
27+
TIMCLKEN1_0 = DUALTIMER_Clock_Enable;
28+
else if(DUALTIMERn == DUALTIMER1_1)
29+
TIMCLKEN1_1 = DUALTIMER_Clock_Enable;
30+
}
31+
32+
void DUALTIMER_ClockDisable(DUALTIMER_TypeDef* DUALTIMERn)
33+
{
34+
/* Check the parameters */
35+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
36+
37+
if(DUALTIMERn == DUALTIMER0_0)
38+
TIMCLKEN0_0 = DUALTIMER_Clock_Disable;
39+
else if(DUALTIMERn == DUALTIMER0_1)
40+
TIMCLKEN0_1 = DUALTIMER_Clock_Disable;
41+
else if(DUALTIMERn == DUALTIMER1_0)
42+
TIMCLKEN1_0 = DUALTIMER_Clock_Disable;
43+
else if(DUALTIMERn == DUALTIMER1_1)
44+
TIMCLKEN1_1 = DUALTIMER_Clock_Disable;
45+
}
46+
47+
void DUALTIMER_DeInit(DUALTIMER_TypeDef* DUALTIMERn)
48+
{
49+
/* Check the parameters */
50+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
51+
52+
DUALTIMER_Stop(DUALTIMERn);
53+
54+
DUALTIMERn->TimerLoad = 0x0;
55+
DUALTIMERn->TimerControl = 0x20;
56+
DUALTIMERn->TimerBGLoad = 0x0;
57+
}
58+
59+
void DUALTIMER_Init(DUALTIMER_TypeDef* DUALTIMERn, DUALTIMER_InitTypDef* DUALTIMER_InitStruct)
60+
{
61+
uint32_t tmp = 0;
62+
/* Check the parameters */
63+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
64+
assert_param(IS_DUALTIMER_TimerMode(DUALTIMER_InitStruct->TimerControl_Mode));
65+
assert_param(IS_DUALTIMER_TimerPre(DUALTIMER_InitStruct->TimerControl_Pre));
66+
assert_param(IS_DUALTIMER_TimerSize(DUALTIMER_InitStruct->TimerControl_Size));
67+
assert_param(IS_DUALTIMER_OneShot(DUALTIMER_InitStruct->TimerControl_OneShot));
68+
69+
DUALTIMER_Stop(DUALTIMERn);
70+
71+
DUALTIMERn->TimerLoad = DUALTIMER_InitStruct->TimerLoad;
72+
73+
tmp = DUALTIMERn->TimerControl;
74+
tmp |= (DUALTIMER_InitStruct->TimerControl_Mode << DUALTIMER_TimerControl_TimerMode_Pos);
75+
tmp |= (DUALTIMER_InitStruct->TimerControl_Pre << DUALTIMER_TimerControl_Pre_Pos);
76+
tmp |= (DUALTIMER_InitStruct->TimerControl_Size << DUALTIMER_TimerControl_Size_Pos);
77+
tmp |= (DUALTIMER_InitStruct->TimerControl_OneShot << DUALTIMER_TimerControl_OneShot_Pos);
78+
//Reset values not used
79+
tmp &= 0xEF;
80+
81+
DUALTIMERn->TimerControl = tmp;
82+
}
83+
84+
void DUALTIMER_IntConfig(DUALTIMER_TypeDef* DUALTIMERn, FunctionalState state)
85+
{
86+
/* Check the parameters */
87+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
88+
89+
if(state == ENABLE)
90+
DUALTIMERn->TimerControl |= (DUALTIMER_TimerControl_IntEnable << DUALTIMER_TimerControl_IntEnable_Pos);
91+
else
92+
DUALTIMERn->TimerControl &= ~(DUALTIMER_TimerControl_IntEnable << DUALTIMER_TimerControl_IntEnable_Pos);
93+
}
94+
95+
void DUALTIMER_IntClear(DUALTIMER_TypeDef* DUALTIMERn)
96+
{
97+
/* Check the parameters */
98+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
99+
100+
DUALTIMERn->TimerIntClr = DUALTIMER_Int_Clear;
101+
}
102+
103+
ITStatus DUALTIMER_GetIntStatus(DUALTIMER_TypeDef* DUALTIMERn)
104+
{
105+
/* Check the parameters */
106+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
107+
108+
return (ITStatus)DUALTIMERn->TimerMIS;
109+
}
110+
111+
FlagStatus DUALTIMER_GetIntEnableStatus(DUALTIMER_TypeDef* DUALTIMERn)
112+
{
113+
/* Check the parameters */
114+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
115+
116+
return (FlagStatus)((DUALTIMERn->TimerControl >> DUALTIMER_TimerControl_IntEnable_Pos) & 0x1);
117+
}
118+
119+
void DUALTIMER_Start(DUALTIMER_TypeDef* DUALTIMERn)
120+
{
121+
/* Check the parameters */
122+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
123+
124+
DUALTIMERn->TimerControl |= (DUALTIMER_TimerControl_TimerEnable << DUALTIMER_TimerControl_TimerEnable_Pos);
125+
}
126+
127+
void DUALTIMER_Stop(DUALTIMER_TypeDef* DUALTIMERn)
128+
{
129+
/* Check the parameters */
130+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
131+
132+
DUALTIMERn->TimerControl &= ~(DUALTIMER_TimerControl_TimerEnable << DUALTIMER_TimerControl_TimerEnable_Pos);
133+
}
134+
135+
uint32_t DUALTIMER_GetTimerLoad(DUALTIMER_TypeDef* DUALTIMERn)
136+
{
137+
/* Check the parameters */
138+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
139+
140+
return DUALTIMERn->TimerLoad;
141+
}
142+
143+
void DUALTIMER_SetTimerLoad(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerLoad)
144+
{
145+
/* Check the parameters */
146+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
147+
148+
DUALTIMERn->TimerLoad = TimerLoad;
149+
}
150+
151+
uint32_t DUALTIMER_GetTimerValue(DUALTIMER_TypeDef* DUALTIMERn)
152+
{
153+
/* Check the parameters */
154+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
155+
156+
return DUALTIMERn->TimerValue;
157+
}
158+
159+
uint32_t DUALTIMER_GetTimerControl(DUALTIMER_TypeDef* DUALTIMERn)
160+
{
161+
/* Check the parameters */
162+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
163+
164+
return DUALTIMERn->TimerControl;
165+
}
166+
167+
void DUALTIMER_SetTimerControl(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerControl)
168+
{
169+
/* Check the parameters */
170+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
171+
172+
DUALTIMERn->TimerControl = TimerControl;
173+
}
174+
175+
uint32_t DUALTIMER_GetTimerRIS(DUALTIMER_TypeDef* DUALTIMERn)
176+
{
177+
/* Check the parameters */
178+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
179+
180+
return DUALTIMERn->TimerRIS;
181+
}
182+
183+
uint32_t DUALTIMER_GetTimerMIS(DUALTIMER_TypeDef* DUALTIMERn)
184+
{
185+
/* Check the parameters */
186+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
187+
188+
return DUALTIMERn->TimerMIS;
189+
}
190+
191+
uint32_t DUALTIMER_GetTimerBGLoad(DUALTIMER_TypeDef* DUALTIMERn)
192+
{
193+
/* Check the parameters */
194+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
195+
196+
return DUALTIMERn->TimerBGLoad;
197+
}
198+
199+
void DUALTIMER_SetTimerBGLoad(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerBGLoad)
200+
{
201+
/* Check the parameters */
202+
assert_param(IS_DUALTIMER_ALL_CH(DUALTIMERn));
203+
204+
DUALTIMERn->TimerBGLoad = TimerBGLoad;
205+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
/**
2+
******************************************************************************
3+
* @file W7500x_stdPeriph_Driver/inc/W7500x_dualtimer.h
4+
* @author IOP Team
5+
* @version V1.0.0
6+
* @date 01-May-2015
7+
* @brief This file contains all the functions prototypes for the dualtimer
8+
* firmware library.
9+
******************************************************************************
10+
*
11+
******************************************************************************
12+
*/
13+
14+
/* Define to prevent recursive inclusion -------------------------------------*/
15+
#ifndef __W7500X_DUALTIMER_H
16+
#define __W7500X_DUALTIMER_H
17+
18+
#ifdef __cplusplus
19+
extern "C" {
20+
#endif
21+
22+
/* Includes ------------------------------------------------------------------*/
23+
#include "W7500x.h"
24+
25+
/**********************************************************************************************/
26+
/**********************************************************************************************/
27+
// This structure and define must be in W7500x.h
28+
/**********************************************************************************************/
29+
/**********************************************************************************************/
30+
31+
typedef struct
32+
{
33+
uint32_t TimerLoad;
34+
uint32_t TimerControl_Mode;
35+
uint32_t TimerControl_Pre;
36+
uint32_t TimerControl_Size;
37+
uint32_t TimerControl_OneShot;
38+
}DUALTIMER_InitTypDef;
39+
40+
41+
#define IS_DUALTIMER_TimerMode(MODE) (MODE <= 1)
42+
#define IS_DUALTIMER_TimerPre(PREE) (PRE <= 2)
43+
#define IS_DUALTIMER_TimerSize(SIZE) (SIZE <= 1)
44+
#define IS_DUALTIMER_OneShot(ONESHOT) (ONESHOT <= 1)
45+
46+
47+
48+
49+
50+
51+
#define DUALTIMER_Int_Clear 0x1ul
52+
53+
#define DUALTIMER_Clock_Enable 0x1ul
54+
#define DUALTIMER_Clock_Disable ~DUALTIMER_Clock_Enable
55+
56+
57+
#define IS_DUALTIMER_ALL_CH(CH) ((CH == DUALTIMER0_0) || \
58+
(CH == DUALTIMER0_1) || \
59+
(CH == DUALTIMER1_0) || \
60+
(CH == DUALTIMER1_1))
61+
62+
63+
64+
void DUALTIMER_ClockEnable(DUALTIMER_TypeDef* DUALTIMERn);
65+
void DUALTIMER_ClockDisable(DUALTIMER_TypeDef* DUALTIMERn);
66+
void DUALTIMER_DeInit(DUALTIMER_TypeDef* DUALTIMERn);
67+
void DUALTIMER_Init(DUALTIMER_TypeDef* DUALTIMERn, DUALTIMER_InitTypDef* DUALTIMER_InitStruct);
68+
void DUALTIMER_IntConfig(DUALTIMER_TypeDef* DUALTIMERn, FunctionalState state);
69+
void DUALTIMER_IntClear(DUALTIMER_TypeDef* DUALTIMERn);
70+
ITStatus DUALTIMER_GetIntStatus(DUALTIMER_TypeDef* DUALTIMERn);
71+
FlagStatus DUALTIMER_GetIntEnableStatus(DUALTIMER_TypeDef* DUALTIMERn);
72+
void DUALTIMER_Start(DUALTIMER_TypeDef* DUALTIMERn);
73+
void DUALTIMER_Stop(DUALTIMER_TypeDef* DUALTIMERn);
74+
uint32_t DUALTIMER_GetTimerLoad(DUALTIMER_TypeDef* DUALTIMERn);
75+
void DUALTIMER_SetTimerLoad(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerLoad);
76+
uint32_t DUALTIMER_GetTimerValue(DUALTIMER_TypeDef* DUALTIMERn);
77+
uint32_t DUALTIMER_GetTimerControl(DUALTIMER_TypeDef* DUALTIMERn);
78+
void DUALTIMER_SetTimerControl(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerControl);
79+
uint32_t DUALTIMER_GetTimerRIS(DUALTIMER_TypeDef* DUALTIMERn);
80+
uint32_t DUALTIMER_GetTimerMIS(DUALTIMER_TypeDef* DUALTIMERn);
81+
uint32_t DUALTIMER_GetTimerBGLoad(DUALTIMER_TypeDef* DUALTIMERn);
82+
void DUALTIMER_SetTimerBGLoad(DUALTIMER_TypeDef* DUALTIMERn, uint32_t TimerBGLoad);
83+
84+
85+
86+
//======================= Interrupt handler ==============================
87+
//void DUALTIMER0_Handler();
88+
//void DUALTIMER1_Handler();
89+
90+
91+
#ifdef __cplusplus
92+
}
93+
#endif
94+
95+
96+
#endif //__W7500X_DUALTIMER_H

0 commit comments

Comments
 (0)