历史上的今天
今天是:2024年08月25日(星期日)
2020年08月25日 | STM32CubeMX时钟配置详解
2020-08-25 来源:eefocus
软件:
(1)STM32CubeMX
(2)SW4STM32
实验平台:STM32F407VET6开发板
使用STM32CubeMX的一个好处就是图形化配置,在时钟配置方面,主要了解清楚高级外设总线(APB1、APB2)控制哪些外设。
(0)先配置好PA6、PA7(控制LED灯),好观察实验现象
(1)首先配置RCC(复位和时钟控制),选择外部高速始终,如下图
(2)为了测试不同APB的时钟频率效果,在此选择了TIM1和TIM2,按下图配置
(3)为什么选择以上两个定时器作为例子?参考STM32F4XX中文参考手册,找到RCC相关内容,如图

可知TIM1 在APB2,TIM2 在APB1
(4)进入时钟配置,我的STM32F407开发板外部晶振是8MHz的,在Input freequency 输入8,在HCLK 那里会提示最大频率168MHz,输入168,然后自动寻求配置,注意第一次配置出来的还是内部时钟HSI 的,要选择为HSE ,配置好后如下图
顺便提一下,STM32F103的开发板也差不多的,只不过F1的最高时钟频率是72MHz。
(5)配置好后时钟后可以看到APB1 定时器(如TIM2)频率为84MHz,APB2 定时器(如TIM1)频率为168MHz
(6)设置NVIC,TIM1是高级定时器,选择更新中断,TIM2是通用定时器

除了定时器,我自己还设置了两个串口中断,可以不用理会
(7)设置定时器

上面两个定时器设置实现的都是定时1s进入中断处理。
以TIM1为例,APB2时钟频率168MHz=168,000,000Hz,选取预分频系数(Prescaler)(16位存储,预分频系数最大65535)为16799,则定时器的时钟频率为168,000,000 / 16800 = 10000 Hz,频率为1万赫兹,选取计数周期(Counter Period,16位存储)为9999, 所以定时周期1s,同理TIM2也是同样计算,如果APB的时钟频率改变,一样安装上面的方法进行设置。
(8)生成SW4STM32工程,打开,在main函数里面while前启动定时器,如下代码
/* Infinite loop */
/* USER CODE BEGIN WHILE */
HAL_TIM_Base_Start_IT(&htim1);/启动定时器
HAL_TIM_Base_Start_IT(&htim2);
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */12345678910111213(9)编写定时器中断
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM2) // 判断哪个定时器中断
{
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_6); // 翻转灯
}
if(htim->Instance == TIM1) // 判断哪个定时器中断
{
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_7); // 翻转灯
}
}
/* USER CODE END 4 */12345678910111213141516最后烧写到开发板实现预定效果,对定时器中断的详细视频介绍可以参考博主制作的相关视频,一个是在proteus仿真实现的,另一个是结合freertos实现的:https://www.bilibili.com/video/av63392182, https://www.bilibili.com/video/av63560586
上一篇:STM32f103时钟系统简介
下一篇:Stm32时钟分析
史海拾趣
|
随着科学技术的快速发展,特别是数字技术及各种超大规模集成电路的广泛应用,电子装备尤其是军用电子装备结构越来越复杂,功能越来越完善,自动化程度也越来越高。虽然电子系统的性能得到提高,但是对测试和维修保障也产生了测试流程复杂、测试时间 ...… 查看全部问答> |
|
菜鸟问题:wince开发,需要什么样的开发环境?及好书推荐~! 本人有多年的CB6、asp.net(C#)、Java经验,现在因工作需要,想搞下wince,可是,盲人骑瞎马,等待楼下各位指点下迷津. vs2008和2005我比较熟,vc6一般,这种情况下,我应该搭什么样的开发环境?具体应用是做一个产品,电子词典结合mp4 这两天我搞 ...… 查看全部问答> |
|
我用的GSM模块是EM310 现在硬件电路还没出来,公司让我写设计先, 我想知道,如果发送命令 第一步:(AT%ETCPIP=”dtu”,”123”), 注册网络用户名dtu和密码123 第二步:(AT%ETCPIP= ,”333”) 那么用户名是被设置为了默认值还是空或者还 ...… 查看全部问答> |
|
可有偿哦-有高手能提供点读笔芯片组开发支持吗,或提供芯片原组代码 想做一款点读的东东,好像有好几个厂家的芯片组可以选择,请问谁可以提供开发芯片组(或在哪儿有代理可以买),有源代码更好了,兄弟自己掏点儿银子也行啊,哈哈… 查看全部问答> |
|
学校实验室把光盘搞丢了(郁闷),本人急需该试验箱资料,特别是光盘,邮箱地址:MrGanCheng@gmail.com 如果没有光盘资料的话,能够提供实验箱上LCD(HHARM9-LCD-R4)的资料或初始化代码(Linux和Wince代码均可)也可以 (如能提供全部资料,我给10 ...… 查看全部问答> |




