新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2020-5-12
- 在线时间
- 6 小时
|
1金钱
本人的理解:定时器的PWM模式下,对应通道的输出为方波,且当CNT<CCR和CNT>CCR时,电平不相同。
于是就想试一下能否用串口打印对应情况下通道的输出值,发现不管CNT<CCR还是CNT>CCR,对应通道的输出值都为1。这个是为什么呢?
主函数测试代码如下(TIM3的初始化参考正点原子例程)
- int main(void)
- {
- u8 n, key = 0,k = 0;
- u16 led0pwmval=0;
- u8 dir=1;
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化为115200
- LED_Init(); //LED端口初始化
- KEY_Init();
- TIM3_Int_Init(10000,71); //频率为1微秒。
- TIM_SetCompare2(TIM3,5000);
- while(1)
- {
- key = KEY_Scan(0);
- delay_ms(10);
- if(key == KEY0_PRES)
- {
- printf("KEY0Press ");
- // TIM_SetCounter(TIM3, 5000);
- // TIM_SetCompare2(TIM3,1000);
- TIM_GenerateEvent(TIM3, TIM_EventSource_Update);
- delay_ms(2);
- printf("Counter = %5d, Compare2 = %5d, PBout = %ld\r\n", TIM_GetCounter(TIM3), TIM_GetCapture2(TIM3), PBout(5));
- }
- if(key == KEY1_PRES)
- {
- printf("KEY1Press ");
- // TIM_SetCounter(TIM3, 5000);
- // TIM_SetCompare2(TIM3,6000);
- TIM_GenerateEvent(TIM3, TIM_EventSource_Update);
- delay_ms(7);
- printf("Counter = %5d, Compare2 = %5d, PBout = %ld\r\n", TIM_GetCounter(TIM3), TIM_GetCapture2(TIM3), PBout(5));
- }
- n++;
- }
- }
复制代码 串口输出如下:KEY0Press Counter = 2001, Compare2 = 5000, PBout = 1
KEY1Press Counter = 7001, Compare2 = 5000, PBout = 1
KEY0Press Counter = 2001, Compare2 = 5000, PBout = 1
KEY1Press Counter = 7001, Compare2 = 5000, PBout = 1
|
|