ATY_LIB
V2_102_230218
ATY_LIB for general devices or ALGO
Loading...
Searching...
No Matches
main.c
Go to the documentation of this file.
1
// Copyright 2021 IOsetting <iosetting(at)outlook.com>
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
22
#include "
fw_hal.h
"
23
#include "
voice.h
"
24
25
uint8_t
dc
= 0;
26
uint16_t
voice_pos
= 0,
voice_size
= 27451;
27
28
void
PWM_Init
()
29
{
30
// Set GPIO pins output mode P10 -> PWMA.1P
31
GPIO_P1_SetMode
(
GPIO_Pin_0
,
GPIO_Mode_Output_PP
);
32
// Turn off PWMA.1 before change its mode
33
PWMA_PWM1_SetPortState
(
HAL_State_OFF
);
34
PWMA_PWM1N_SetPortState
(
HAL_State_OFF
);
35
// Set PWMA.1 port direction output
36
PWMA_PWM1_SetPortDirection
(
PWMB_PortDirOut
);
37
// Set PWMA.1 output low voltage when counter is less than target value
38
PWMA_PWM1_ConfigOutputMode
(
PWM_OutputMode_PWM_HighIfLess
);
39
// Enable comparison value preload to make duty cycle changing smooth
40
PWMA_PWM1_SetComparePreload
(
HAL_State_ON
);
41
// Turn on PWMA.1
42
PWMA_PWM1_SetPortState
(
HAL_State_ON
);
43
44
// Set PWM frequency to 16kHz, Fpwm = SYSCLK / (PWMx_PSCR + 1) / (PWMx_ARR + 1)
45
// You will hear obvious noise if PWM frequency is less than 12kHz
46
PWMA_SetPrescaler
(8);
47
// PWM width = Period + 1 (side alignment), or AutoReloadPeriod * 2 (center alignment)
48
PWMA_SetPeriod
(0xFF);
49
// Counter direction, down:from [PWMA_ARRH,PWMA_ARRL] to 0
50
PWMA_SetCounterDirection
(
PWM_CounterDirection_Down
);
51
// Enable preload on reload-period
52
PWMA_SetAutoReloadPreload
(
HAL_State_ON
);
53
// Enable output on PWMA.1P
54
PWMA_SetPinOutputState
(
PWM_Pin_1
,
HAL_State_ON
);
55
// Set PWMA.1 alternative ports to P1.0 and P1.1
56
PWMA_PWM1_SetPort
(
PWMA_PWM1_AlterPort_P10_P11
);
57
// Enable overall output
58
PWMA_SetOverallState
(
HAL_State_ON
);
59
// Start counter
60
PWMA_SetCounterState
(
HAL_State_ON
);
61
}
62
63
void
Timer0_Init
()
64
{
65
TIM_Timer0_Config
(
HAL_State_ON
,
TIM_TimerMode_16BitAuto
, 8000);
66
EXTI_Timer0_SetIntState
(
HAL_State_ON
);
67
EXTI_Timer0_SetIntPriority
(
EXTI_IntPriority_High
);
68
EXTI_Global_SetIntState
(
HAL_State_ON
);
69
TIM_Timer0_SetRunState
(
HAL_State_ON
);
70
}
71
72
INTERRUPT
(Timer0_Routine,
EXTI_VectTimer0
)
73
{
74
uint8_t
dc
;
75
dc
=
voice_bulk
[
voice_pos
++];
76
PWMA_PWM1_SetCaptureCompareValue
(
dc
);
77
if
(
voice_pos
==
voice_size
)
voice_pos
= 0;
78
}
79
80
void
main
(
void
)
81
{
82
SYS_SetClock
();
83
PWM_Init
();
84
Timer0_Init
();
85
86
while
(1);
87
}
EXTI_Timer0_SetIntPriority
#define EXTI_Timer0_SetIntPriority(__PRIORITY__)
Definition:
fw_exti.h:214
EXTI_IntPriority_High
@ EXTI_IntPriority_High
Definition:
fw_exti.h:25
EXTI_Timer0_SetIntState
#define EXTI_Timer0_SetIntState(__STATE__)
Definition:
fw_exti.h:116
EXTI_Global_SetIntState
#define EXTI_Global_SetIntState(__STATE__)
Definition:
fw_exti.h:115
EXTI_VectTimer0
#define EXTI_VectTimer0
Definition:
fw_exti.h:38
GPIO_Pin_0
@ GPIO_Pin_0
Definition:
fw_gpio.h:45
GPIO_P1_SetMode
#define GPIO_P1_SetMode(__PINS__, __MODE__)
Definition:
fw_gpio.h:79
GPIO_Mode_Output_PP
@ GPIO_Mode_Output_PP
Definition:
fw_gpio.h:24
fw_hal.h
PWMA_SetOverallState
#define PWMA_SetOverallState(__STATE__)
Definition:
fw_pwm.h:102
PWMA_SetPinOutputState
#define PWMA_SetPinOutputState(__PINS__, __STATE__)
Definition:
fw_pwm.h:105
PWMA_PWM1_SetPortState
#define PWMA_PWM1_SetPortState(__STATE__)
Definition:
fw_pwm.h:159
PWMA_PWM1_SetPort
#define PWMA_PWM1_SetPort(__ALTER_PORT__)
Definition:
fw_pwm.h:291
PWMA_PWM1N_SetPortState
#define PWMA_PWM1N_SetPortState(__STATE__)
Definition:
fw_pwm.h:161
PWMA_PWM1_SetComparePreload
#define PWMA_PWM1_SetComparePreload(__STATE__)
Definition:
fw_pwm.h:208
PWMA_PWM1_SetCaptureCompareValue
#define PWMA_PWM1_SetCaptureCompareValue(__16BIT_VAL__)
Definition:
fw_pwm.h:232
PWMA_PWM1_SetPortDirection
#define PWMA_PWM1_SetPortDirection(__PORT_DIR__)
Definition:
fw_pwm.h:190
PWM_OutputMode_PWM_HighIfLess
@ PWM_OutputMode_PWM_HighIfLess
Definition:
fw_pwm.h:70
PWMA_PWM1_ConfigOutputMode
#define PWMA_PWM1_ConfigOutputMode(__MODE__)
Definition:
fw_pwm.h:216
PWMA_SetPrescaler
#define PWMA_SetPrescaler(__16BIT_VAL__)
Definition:
fw_pwm.h:87
PWMA_PWM1_AlterPort_P10_P11
@ PWMA_PWM1_AlterPort_P10_P11
Definition:
fw_pwm.h:263
PWMA_SetAutoReloadPreload
#define PWMA_SetAutoReloadPreload(__STATE__)
Definition:
fw_pwm.h:122
PWMA_SetPeriod
#define PWMA_SetPeriod(__16BIT_VAL__)
Definition:
fw_pwm.h:94
PWMB_PortDirOut
@ PWMB_PortDirOut
Definition:
fw_pwm.h:407
PWMA_SetCounterDirection
#define PWMA_SetCounterDirection(__DIR__)
Definition:
fw_pwm.h:135
PWM_CounterDirection_Down
@ PWM_CounterDirection_Down
Definition:
fw_pwm.h:56
PWM_Pin_1
@ PWM_Pin_1
Definition:
fw_pwm.h:24
PWMA_SetCounterState
#define PWMA_SetCounterState(__STATE__)
Definition:
fw_pwm.h:154
SYS_SetClock
void SYS_SetClock(void)
Definition:
fw_sys.c:40
TIM_TimerMode_16BitAuto
@ TIM_TimerMode_16BitAuto
Definition:
fw_tim.h:24
TIM_Timer0_Config
void TIM_Timer0_Config(HAL_State_t freq1t, TIM_TimerMode_t mode, uint16_t frequency)
Definition:
fw_tim.c:38
TIM_Timer0_SetRunState
#define TIM_Timer0_SetRunState(__STATE__)
Definition:
fw_tim.h:35
uint16_t
unsigned short uint16_t
Definition:
fw_types.h:19
HAL_State_OFF
@ HAL_State_OFF
Definition:
fw_types.h:70
HAL_State_ON
@ HAL_State_ON
Definition:
fw_types.h:71
uint8_t
unsigned char uint8_t
Definition:
fw_types.h:18
main
int main(void)
Definition:
main.c:45
INTERRUPT
INTERRUPT(Timer0_Routine, EXTI_VectTimer0)
Definition:
main.c:72
dc
uint8_t dc
Definition:
main.c:25
Timer0_Init
void Timer0_Init()
Definition:
main.c:63
voice_size
uint16_t voice_size
Definition:
main.c:26
voice_pos
uint16_t voice_pos
Definition:
main.c:26
PWM_Init
void PWM_Init()
Definition:
main.c:28
voice_bulk
__CODE uint8_t voice_bulk[]
Definition:
voice.c:3
voice.h
ATY_LIB
FwLib_STC8
demo
pwm
pwm_dac_voice
main.c
Generated by
1.9.6