- 打卡等级:以坛为家I
- 打卡总天数:338
- 最近打卡:2025-05-02 22:49:07
金牌会员
- 积分
- 1756
|
发表于 2023-8-12 16:24:11
|
显示全部楼层
void PWMA_Config(void)
{
P_SW2 |= 0x80;
PWMA_CCER1 = 0;
PWMA_CCER2 = 0;
PWMA_CCR2 = 400;
PWMA_ARR = 500;
PWMA_CCMR2 = 0x68; // 通道模式配置, PWM模式1, 预装载允许
PWMA_CCER1 |= 0x50; // 开启比较输出, 高电平有效
PWMA_PS |= (0<<2); // 选择IO, 0:选择P1.2 P1.3, 1:选择P2.2 P2.3, 2:选择P6.2 P6.3,
PWMA_ENO &= ~0x08; // IO输出允许, bit7: ENO4N, bit6: ENO4P, bit5: ENO3N, bit4: ENO3P, bit3: ENO2N, bit2: ENO2P, bit1: ENO1N, bit0: ENO1P
PWMA_BKR |= 0x80; // 主输出使能 相当于总开关
PWMA_CR1 = 0x81; // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数, bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
PWMA_EGR = 0x01; // 产生一次更新事件, 清除计数器和预分频计数器, 装载预分频寄存器的值
}
void Key_Config(void) //按键检测
{
if((!JS )&&(!PA5)&&(ad3_flag_green = 1))
{
PWMA_ENO |= 0x08;
P11 = 0;
}
else
{
PWMA_ENO &= 0x08;
}
if((!JS )&&(!PA5)&&(ad3_flag_orange = 1))
{
PWMA_ENO |= 0x08;
P10 = 0;
P11 = 0;
}
else
{
PWMA_ENO &= ~0x08;
}
if((!JS )&&(!PA5)&&(ad3_flag_red = 1))
{
PWMA_ENO |= 0x08;
P10 = 0;
}
else
{
PWMA_ENO &= ~0x08;
}
void main()
{
IO_init_config();
//PWMA_Init();
Timer0_init();
STC8G_ADC_Iint(); //STC8G系列10位AD初始化函数
while(1)
{
Change_Led();
Key_Config();
{
PWMA_Config();
}
}
}
这个PWM波形为什么是假的,经常在跳动
|
|