本帖最后由 oxygenzz 于 2019-5-6 17:58 编辑
CCP是由Capture(捕捉)、Compare(比较)、PWM三个单词的首字母组成。顾名思义,它有三种功能,即信号捕捉、定时器比较和PWM脉冲串。本帖解释信号捕捉功能。
MCC配置界面:
原理框图:
捕捉信号源
信号源可以是引脚引入的外部数字信号,也可以是MCU内部由其他外设产生的内部信号。
捕捉事件
捕捉的对象是信号源上的边沿变化事件(上升沿/下降沿)。可以每个边沿捕捉,也可以每隔几个边沿进行捕捉,由具体的捕捉模式设定来决定。
捕捉模式
- 每个边沿(上升沿或下降沿)
- 每个上升沿
- 每个下降沿
- 每4个上升沿
- 每16个上升沿
捕捉后输出方式
- 设置中断标志、产生中断
- 捕捉状态由引脚输出
- 从定时器中获取捕捉时刻的16位定时值,保存在专门的寄存器中
定时器
定时器只能选择奇数标号的定时器Timer1/3/5等。CCP所使用的定时器,需要在MCC中选择并配置。
MCC代码
Ccp1.c中
初始化
void CCP1_Initialize(void);
中断服务程序
void CCP1_CaptureISR(void);
设置中断回调函数,参数为回调函数指针。
void CCP1_SetCallBack(void (*customCallBack)(uint16_t));
由于使用了中断,main.c中需要将全局中断和外设中断使能。
// Enable the Global Interrupts
INTERRUPT_GlobalInterruptEnable();
// Enable the Peripheral Interrupts
INTERRUPT_PeripheralInterruptEnable();
此外,tmr1.c中有Timer1的MCC代码。
|