您的位置:首页 > 文旅 > 美景 > 个人怎么申请专利_深圳平面设计公司排名榜_包就业的培训机构_合肥网络推广外包

个人怎么申请专利_深圳平面设计公司排名榜_包就业的培训机构_合肥网络推广外包

2024/12/23 11:54:20 来源:https://blog.csdn.net/zengdanli/article/details/142377645  浏览:    关键词:个人怎么申请专利_深圳平面设计公司排名榜_包就业的培训机构_合肥网络推广外包
个人怎么申请专利_深圳平面设计公司排名榜_包就业的培训机构_合肥网络推广外包

通用PWM捕获

    gtim_timx_pwm_chy_init(5000 - 1,1700 - 1);   /* 100k HZ计数频率,50ms的周期,占空比为50%,也就是高电平时间 = 25ms = 25000us */

ARR是5000-1,系统时钟频率170mhz,PWM频率=定时器时钟频率/(ARR+1)(PSC+1)=170mhz/(5000*1700)=20HZ,PWM周期=1/20=0.05s=50ms

占空比=比较值/(ARR+1)

捕获频率的计算:
计数频率=时钟频率/(ARR+1)


extern uint8_t  g_timxchy_cap_sta;               /* 输入捕获状态 */
extern uint16_t g_timxchy_cap_val;               /* 输入捕获值 */int main(void)
{uint32_t temp = 0;uint8_t t = 0;HAL_Init();                                  /* 初始化HAL库 */sys_stm32_clock_init(85, 2, 2, 4, 8);        /* 设置时钟,170Mhz */delay_init(170);                             /* 延时初始化 */usart_init(115200);                          /* 初始化串口 */led_init();                                  /* 初始化LED */gtim_timx_pwm_chy_init(5000 - 1,1700 - 1);   /* 100k HZ计数频率,50ms的周期,占空比为50%,也就是高电平时间 = 25ms = 25000us */gtim_timx_cap_chy_init(0xFFFF - 1, 170 - 1); /* 以1Mhz的频率计数 捕获 *///0xFFFF:65534 这允许在较长的时间内进行捕获而不会溢出while (1){if (g_timxchy_cap_sta & 0X80)            /* 成功捕获到了一次高电平 */{temp = g_timxchy_cap_sta & 0X3F;temp *= 0xFFFF;                      /* 溢出时间总和 */temp += g_timxchy_cap_val;           /* 得到总的高电平时间 */printf("HIGH:%d us\r\n", temp);      /* 打印总的高电平时间 */g_timxchy_cap_sta = 0;               /* 开启下一次捕获 */}t++;if (t > 20)                              /* 200ms进入一次 */{t = 0;LED0_TOGGLE();                       /* LED0闪烁,提示程序运行 */}delay_ms(10);}
}

&0x80 :检查左边第一位是否是1 ,它是1才可以进行if后的语句
至于为什么位7为1 就表示捕获成功的原因:
位0:捕获启动
位1:捕获溢出
位7:捕获成功

temp = g_timxchy_cap_sta & 0X3F :
0X3F:0011 1111

(uart:直接用printf 就可以)
溢出时间总和=溢出次数*溢出时间

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com