中级会员
 
- 积分
- 203
- 金钱
- 203
- 注册时间
- 2020-5-11
- 在线时间
- 42 小时
|
10金钱
新手上路!!!
我需要的是将2KHZ,占空比为20%的PWM波通过串口在上位机中显示,
我的计算方式是:
频率=72MHZ/(arr+1)*(psc+1);
占空比=CCR1/(arr+1);
下面是我的main.c代码.
输出结果为:
497us
2012HZ
想问一下大家我的问题在哪???
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "timer.h"
- #include "usart.h"
- extern u8 TIM2CH1_CAPTURE_STA; //输入捕获状态
- extern u16 TIM2CH1_CAPTURE_VAL; //输入捕获值
- int main(void)
- {
- u32 temp=0;
- u32 Frequency=0;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
- delay_init(); //延时函数初始化
- uart_init(9600); //9600
- LED_Init(); //初始化与LED连接的硬件接口
- TIM1_PWM_Init(499,71); //分频。arr=499;psc=71;
- TIM2_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数
- while(1)
- {
- delay_ms(10);
- TIM_SetCompare1(TIM1,100); //ccr1=100
- if(TIM_GetCapture1(TIM1)==300)TIM_SetCompare1(TIM1,0);
- if(TIM2CH1_CAPTURE_STA&0X80) //成功捕获到了一个完整的PWM波
- {
-
- temp=TIM2CH1_CAPTURE_STA&0X3F;
- temp*=65536; //溢出时间总和
- temp+=TIM2CH1_CAPTURE_VAL;
- Frequency=1.0/temp*1000000;
- printf("PWM波周期为:%d us\r\n",temp); //打印总周期
- printf("PWM波频率为:%d HZ\r\n",Frequency); //打印总频率
- TIM2CH1_CAPTURE_STA=0; //开启下一次捕获
- }
- }
- }
复制代码 |
|