- 打卡等级:初来乍到
- 打卡总天数:7
- 最近打卡:2025-08-01 04:36:15
注册会员
- 积分
- 109
|
************************************EC11初始化**************************************
void EC11_init(void)
{
P1M0 &= ~0x05; P1M1 &= ~0x05;
P5M0 &= ~0x10; P5M1 &= ~0x10;
//当前初始化使用P1.0为A端口,P5.4为B端口
PWMA_PSCR = 0;
PWMA_ARR = 0xffff;
PWMA_CNTR = 0;
PWMA_ENO = 0;
//PWMA_CCER1 = 0x00; //关闭通道以配置
PWMA_CCMR1 = 0xA1; // 通道模式配置为输入,接编码器 , 滤波器 80 时钟
PWMA_CCMR2 = 0xA1; // 通道模式配置为输入,接编码器 , 滤波器 80 时钟
PWMA_CCER1 |= 0x55; // 使能捕获/比较通道1、通道2
// PWMA_SMCR = 0x01; // 编码器模式 1
// PWMA_SMCR = 0x02; // 编码器模式 2
PWMA_SMCR = 0x03; // 编码器模式 3
PWMA_PS = 0;
PWMA_IER = 0x02; // 使能中断
PWMA_CR1 |= 0x01; // 使能计数器
EA = 1;
}
************************************中断26**************************************
void PWMA_ISR() interrupt 26
{
if (PWMA_SR1 & 0X02) // 当捕获中断标志置1
{
//cnt_H = PWMA_CCR1H; // 读取计数值高8位
cnt_L = PWMA_CCR1L; // 读取计数值低8位
PWMA_SR1 &= ~0x02; // 清零捕获中断标志
EC11_Handle(); // 处理EC11数据
P21=~P21;
}
}
***********************************PWM输出初始化***************************************
void pwm_init(void)
{
PWMB_CCER1 = 0x00; //非捕获/比较输出,清零CCER1捕获比较寄存器
PWMB_CCMR2 = 0x60; //配置PWM6通道CCMR寄存器
PWMB_CCER1 |= 0x30; //使能cc6e cc6p输出通道
PWMB_ARRH = (u8)(PWM_Period >> 8);
PWMB_ARRL = (u8)PWM_Period;
PWMB_ENO = 0x00; //清空PWMB输出使能
PWMB_ENO |= 0x06; //使能PWMB6输出
PWMB_PS = 0x00; //高级 PWM 通道输出脚选择位
PWMB_PS |= Pwm_IO; //选择 PWMB输出通道
//PWMB_BKR = 0x80; //PWMB通道输出使能
PWMB_CR1 |= 0x01; //开始计时
}
***********************************PWM输出设置***************************************
void Pwm_set(u16 cc)
{
if(cc){
PWMB_BKR = 0x80;
lighth*=70; //100均分周期Pwm_period Pwm_period = 6999;
PWMB_CCR6H = (u8)(cc >> 8); //设置占空比时间
PWMB_CCR6L = (u8)(cc);
}else PWMB_BKR = 0x00; //关闭PWMB输出使能
}
|
|