1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef __PCBZ_H__
#define __PCBZ_H__
#include <stdint.h>
#include "common.h"
typedef enum
{
PCBZ_CHANNEL_0 = 0x01,//
PCBZ_CHANNEL_1 = 0x02,
} PCBZ_Channel_t;
#define IS_PCBZ_CHANNEL(CHAN) (((CHAN & 0xfc) == 0x00) &&(CHAN != 0x00))
/** @defgroup PCBZ_ClkSource_definition
* @{
*/
#define PCBZ_FMAIN 0x00
#define PCBZ_FSUB 0x08
#define IS_PCBZ_CLKSOURCE(CLK) (((CLK) == PCBZ_FMAIN) || \
((CLK) == PCBZ_FSUB) )
/** @defgroup PCBZ_ClkSource_definition
* @{
*/
#define PCBZ_FMAIN_0 0x00U // fMAIN/2^0
#define PCBZ_FMAIN_1 0x01U // fMAIN/2^1
#define PCBZ_FMAIN_2 0x02U // fMAIN/2^2
#define PCBZ_FMAIN_3 0x03U // fMAIN/2^3
#define PCBZ_FMAIN_4 0x04U // fMAIN/2^4
#define PCBZ_FMAIN_11 0x05U // fMAIN/2^11
#define PCBZ_FMAIN_12 0x06U // fMAIN/2^12
#define PCBZ_FMAIN_13 0x07U // fMAIN/2^13
#define PCBZ_FSUB_0 0x00U // fSUB/2^0
#define PCBZ_FSUB_1 0x01U // fSUB/2^1
#define PCBZ_FSUB_2 0x02U // fSUB/2^2
#define PCBZ_FSUB_3 0x03U // fSUB/2^3
#define PCBZ_FSUB_4 0x04U // fSUB/2^4
#define PCBZ_FSUB_5 0x05U // fSUB/2^5
#define PCBZ_FSUB_6 0x06U // fSUB/2^6
#define PCBZ_FSUB_7 0x07U // fSUB/2^7
#define IS_PCBZ_FREQSCALAR(SCALAR) ((SCALAR) <= 0x07)
typedef struct
{
PCBZ_Channel_t PCBZ_ChanSelect; /*!< Specifies the channel to output clock for external peripheral or buzzer .
This parameter can be a value of @ref PCBZ_Channel_t */
uint8_t PCBZ_ClkSource; /*!< Specifies the PCBZ timer clock source.
This parameter can be a value of @ref PCBZ_ClkSource_definition */
uint8_t PCBZ_Freqscaler; /*!< Specifies the output signal clock Freqscaler, different clock source owns different
division factor.This parameter can be a value of @ref PCBZ_Freqscaler_definition */
}PCBZ_InitTypeDef;
/***********************************************************************************************************************
Global variables
***********************************************************************************************************************/
/***********************************************************************************************************************
Global functions
***********************************************************************************************************************/
void PCBZ_Init(PCBZ_InitTypeDef* PCBZ_InitStruct);
void PCBZ_Start(PCBZ_Channel_t ch);
void PCBZ_Stop(PCBZ_Channel_t ch);
#endif