新手上路
- 积分
- 33
- 金钱
- 33
- 注册时间
- 2019-10-30
- 在线时间
- 6 小时
|

楼主 |
发表于 2020-7-26 13:39:45
|
显示全部楼层
main函数没有显示,操作失误。在这里
现象是:
1:占空比可以改变,但是按下KEY0,KEY2时while里面的等就常亮或者长灭,然后程序就不行了
2:频率改变时好时坏
3:KEY1好用,while里程序不会出现问题
4:占空比改变的同时,输出波形的幅值也随之增大而增大。
//u16 crr_sub=25;
u16 arr = 500;
int crr = 250;
int main(void)
{
u8 fre;
u8 duty_cycle;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
uart_init(115200);//初始化串口波特率为115200
TIM14_PWM_Init(arr-1,84-1); //84M/84=1Mhz的计数频率,重装载值500,所以PWM频率为 1M/500=2Khz.
TIM_SetCompare1(TIM14,crr); //初始占空比为50%
LED_Init();
KEY_Init();
My_EXTI_Init();
LCD_Init();
POINT_COLOR=RED; //画笔颜色:红色
while(1) //实现比较值从0-300递增,到300后从300-0递减,循环
{
fre = (char)1000000/arr;
duty_cycle = (char)crr/arr;
LCD_ShowString(30,110,200,16,16,"PWM_TEST");
LCD_ShowString(30,140,200,16,16,"当前频率:"); //显示PWM当前频率
LCD_ShowString(60,140,200,16,16,&fre); //显示PWM当前频率
LCD_ShowString(30,180,200,16,16,"当前占空比:"); //显示PWM当前频率
LCD_ShowString(90,180,200,16,16,&duty_cycle); //显示PWM当前频率
LCD_ShowString(100,90,200,12,12,"2019/11/19");
printf("It is OK!!\r\n");
delay_ms(100);
LED1 =!LED1; //指示灯反转表示程序运行
}
}
|
|