1、定时器定时中断频率、周期计算

计数器溢出频率:f =  CK_PSC / (PSC+1) / (ARR+1)
计数周期:      T =  (PSC+1) / (ARR+1 ) / CK_PSC

2、ADC采样周期的计算

(1)ADC的范围

  • STM32的ADC是12位的,2 ^ 12 = 4096. 所以ADC的范围为: 0 ~ 4095

(2) ADCCLK分频器

 RCC_ADCCLKConfig(RCC_PCLK2_Div6); 	 	// 6分频,也就是12MHz
  • APB2最大时钟72MHz, 通过ADC预分频器(可2、4、6、8分频,对应36M 、18M 、12M、9M)进行分频,得到ADCCLK, ADC逐次比较的过程就是由这个时钟推动的。
  • 由于ADCCLK最大14MHz,所以尴尬的是对于ADC预分频器,只能选择6分频和8分频这俩个值,对应频率12M、9M

(3)采样周期


//ADC规则组通道配置:      ADC1     通道      序列   采样时间
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5 );

  • 采样周期计算公式 : T = 采样时间 + 12.5个ADC时钟周期 =(multiple +12.5)/ ( 72MHz / clk_div)
    • 采样时间推导过程:

    ADC时钟频率: ADCCLK = 72MHz / clk_div
    ADC时钟周期: T1 = 1 / ADCCLK
    ADC采样时间: T = multiple* T1 = multiple/ ( 72MHz / ADCCLK) ,其中multiple 就是倍数的意思

  • ADC_SampleTime_55Cycles5 的含义: 采样阶段持续55.5个ADCCLK时钟周期。
    • multiple = 55.5, 若clk_div = 6,
      那么采样周期 T = (55.5+12.5 ) / ( 72 / 6) = 5.67us

🎯 使用小贴士

如果本指南对您的开发工作有帮助,欢迎:

点赞收藏 👍 让更多开发者看到

留言反馈 ✍️ 您的建议是我们改进的动力

关注更新 🔔 获取更多Keil开发技巧

✨ 持续更新提示:
(1)STM32 常用知识将会持续在此篇文章中更新
(2) 后续有空了,我会将我最初的学习笔记发出来(太多了,有22104个字🤦‍♂️),敬请期待!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐