IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32F103时钟系统讲解2 -> 正文阅读

[嵌入式]STM32F103时钟系统讲解2


??写在前面的话:上一篇博客我们详细的介绍了STM32的时钟系统,这一篇我们来验证我们设置的是否正确,并且再进一步深化时钟的概念。也许之前的学习没怎么在意时钟,但是在做项目开发时工程师往往会特别注意时序的问题,一旦设置的不合理或者有错误,产品做成后会带来巨大的影响,因此对时钟的学习是必不可少的。

一、程序实现

??话不多说直接放代码:
main.c

/*
 STM32F103VET6
 SYSCLK = 72M
 HCLK   = 72M
 APB1   = 36M
 APB2   = 72M
*/
#include "main.h"

RCC_ClocksTypeDef clock;

int  main(void)
{
  RCC_GetClocksFreq(&clock);
  while(1)
  {
    ;
  }	
}

main.h

#ifndef __MAIN_H
#define __MAIN_H

#include "stm32f10x.h"

#endif

??程序十分简单我30s就写完了,简单的让我都怀疑,下面先来说一下怎么写出来的。
??我们的目的是验证时钟,获取各个时钟的频率信息,我们知道在ST标准库中,封装了很多很多函数,这其中有一份文件名叫:stm32f10x_rcc.c/h的文件,这一份主要是与STM32的时钟相关的,里面包括了设置时钟频率,时钟源,开启AHB/APB1/APB2的外设时钟等等函数,可以说我们在编程时是离不开这一份文件的,如下图所示,双击点开该文件:
在这里插入图片描述
??直接在.c源文件里找函数是比较累人眼花的,我们先跳转到stm32f10x_rcc.h中,然后一路下拉,拉到最后面,这是ST标准库的规范,一般给函数声明的时候都会放在最后面,开头是很多很多结构体等的定义,可以直接跳过不看,如下所示:
在这里插入图片描述
??拉到最后就开始找我们需要的函数,像RCC_AHBPeriphClockCmd函数就是开启AHB总线上对应外设的时钟,我们这一次要找的是获取时钟频率的函数,我们小眼一瞥一下子就看到了一RCC_GetClocksFreq的函数,看名字RCC获取时钟频率,那就八九不离十就是它了,我们再跳转过去看函数本体,如下图:
在这里插入图片描述
??可以从ST在函数前的注释中(Returns the frequencies of different on chip clocks)可以看出 ,返回的是时钟频率,我们在看一下函数的入口参数是一个结构体:RCC_ClocksTypeDef* RCC_Clocks,我们来看一下结构体成员变量:
在这里插入图片描述
??没错,这就是我们需要的SYSCLK、HCLK、PCLK1、PCLK2时钟,我们只需要在main.c里定义一个RCC_ClocksTypeDef结构体变量在调用这个函数将结构体变量传进去,就完成查询时钟频率的任务。
??然后有人就会来问了,那我调用了这个函数,怎么看最后存在结构体里的得到的时钟频率呢,那就要用到KEIL5的DEBUG功能了,看下一节。

二、KEIL5 DEBUG功能

2.1 准备步骤

??要使用DEBUG功能我们需要将下载器/仿真器连接到板子再连接到电脑,本次例程我使用的是正点原子的DAP仿真器,因此首先在魔术棒的DEBUG选项卡下设置,如下图所示:
在这里插入图片描述
??如果用的是ST-LINK就要选择ST-Link Debugger,仿真器不一样不会有特别大的差异的但是设置的debug方式要选择正确,然后点击右边的Settings里查看,如图:
在这里插入图片描述
??若在②处有显示端口,则表示连接正常,接下来点击OK退出魔术棒选项卡,点击如图的按钮:
在这里插入图片描述
??点击后界面将跳转到DEBUG模式下,如过之前程序没有下载到板子里,点击后会先下载程序进入板子在进入DEBUG界面,如图:
在这里插入图片描述
??下图是DEBUG的工具栏,①是芯片复位按钮,②是运行程序,③是停止运行,④是运行下一步,⑤是跳过运行,⑥是跳出运行,⑦是运行到光标所在处,之后的调试会用到,用到的时候再说:
在这里插入图片描述
??点击选择我们定义的clock,右键Add"clock"to… --Watch1,这一步是将我们定义的clock结构体添加到监视窗口1,如下图:
在这里插入图片描述
??可以在我们的Watch1窗口看到我们添加的clock变量,如图:
在这里插入图片描述
??接下来只需要点击①运行按钮,程序会自动运行,把通过函数获取到的频率值保存下来,如图:
在这里插入图片描述
??如图,和我们上一讲设置的频率值一样,实验成功。
??最后我们在点击停止按钮,停止程序运行,然后再次点击DEBUG按钮退出DEBUG模式,完成本次实验。

2.2 小贴士

??1:如果把变量添加进Watch1后看不到Watch1窗口,可以在View中把窗口调用出来,如图我只打开了Watch1:
在这里插入图片描述
??2:如果点击运行后,Watch1里的变量没有刷新,可以点击View中的Periodic Windows Update,打开变量实时刷新:
在这里插入图片描述

三、小结

??本章我们结束了对STM32时钟系统的讲解,从硬件框架层面到软件层面都进行了介绍,也对DEBUG模式有了一定的认识,下一章将介绍手把手点亮LED灯,STM32入门教学。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:52:49  更:2021-11-14 21:53:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:51:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码