TM4C123GXL_时钟配置
字数统计:594 阅读时长 ≈ 2分钟under 单片机 tag Published on February 5th , 2020 at 01:00 am
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TM4C123GXL_时钟配置</title>
<link rel="stylesheet" href="https://stackedit.io/style.css">
<div class="stackedit__html">
<h1>TM4C的时钟源有四个</h1>
Clock | 介绍 |
---|---|
Precision Internal Oscillator (PIOSC) | 这是TM4C内部的一个内部振荡器,其频率为16MHz,精度为1%,可以用来驱动PLL。PIOSC可配置为ADC时钟源以及UART和SSI的波特率时钟 |
Main Oscillator (MOSC) | 这是TM4C的主振荡器,需要把外部的晶振接到OSC引脚上。晶振频率需要为4MHz和25MHz之间的任意的频率。MOSC也可以用来驱动PLL,但此时的频率需要在5MHz-25MHz之间的支持的频率。同时MOSC也是USB PLL的时钟来源。 |
Low-Frequency Internal Oscillator (LFIOSC) | 这是TM4C内部的低频振荡器,低频内部振荡器适用于深度睡眠省电模式,它的频率是会改变的,范围在10KHz-90KHz之间,标准值30KHz。 |
Hibernation Module Clock Source | 这是休眠模块时钟源,由连接到XOSC引脚的32.768KHz的晶振提供,休眠模块时钟源旨在为系统提供实时时钟源。 |
下面来看一下TM4C的时钟树
从时钟树上可以得到我们上面介绍的时候的一些信息,它的时钟源有四个,MOSC和PIOSC可以用来驱动PLL,PLL的输出为400MHz,然后可以进行分频作为系统时钟,每个时钟源都可以作为哪部分的时钟,以及如何分频,相关的寄存器都在时钟树上有标注,可以根据需要查询。
下面讲一讲固件库对时钟的配置,先看一个示例
<span class="token comment">/ 时钟配置,2.5分频,80Mhz,系统时钟使用PLL,使用外部主时钟源,外部晶振为16MHz /</span>
<span class="token function">SysCtlClockSet</span><span class="token punctuation">(</span><span class="token constant">SYSCTL_SYSDIV_2_5</span> <span class="token operator">|</span> <span class="token constant">SYSCTL_USE_PLL</span> <span class="token operator">|</span> <span class="token constant">SYSCTL_OSC_MAIN</span> <span class="token operator">|</span> <span class="token constant">SYSCTL_XTAL_16MHZ</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
这里有一点要注意TM4C123G的最大主频为80MHz,因此配置时钟的时候,若使用的PLL,最小分频数只能是2.5分频。
固件库中配置适中需要用到这个函数
<span class="token keyword">void</span> <span class="token function">SysCtlClockSet</span><span class="token punctuation">(</span>uint32_t ui32Config<span class="token punctuation">)</span><span class="token punctuation">;</span>
它包含在driverlib/sysctl.h中,这个函数的输入参数有四个部分,需要与在一起作为参数。四个部分分别是分频值,系统时钟来源是PLL还是OSC,使用的时钟源是什么,以及外部晶振的频率是什么。下面简单列举一下各部分的参数都是什么,然后详细的可以自己查看固件库的sysctl.h文件。
时钟分频
<span class="token constant">SYSCTL_SYSDIV_1</span> <span class="token comment">// Processor clock is osc/pll /1</span>
<span class="token constant">SYSCTL_SYSDIV_2</span> <span class="token comment">// Processor clock is osc/pll /2</span>
<span class="token constant">SYSCTL_SYSDIV_3</span> <span class="token comment">// Processor clock is osc/pll /3</span>
<span class="token operator">...</span><span class="token operator">...</span><span class="token operator">...</span><span class="token punctuation">.</span>
<span class="token constant">SYSCTL_SYSDIV_64</span> <span class="token comment">// Processor clock is osc/pll /64</span>
<span class="token constant">SYSCTL_SYSDIV_2_5</span> <span class="token comment">// Processor clock is pll / 2.5</span>
<span class="token constant">SYSCTL_SYSDIV_3_5</span> <span class="token comment">// Processor clock is pll / 3.5</span>
<span class="token operator">...</span><span class="token operator">...</span><span class="token operator">...</span><span class="token punctuation">.</span>
<span class="token constant">SYSCTL_SYSDIV_63_5</span> <span class="token comment">// Processor clock is pll / 63.5</span>
2_5就是2.5分频的意思
系统时钟来源
<span class="token constant">SYSCTL_USE_PLL</span> <span class="token comment">// System clock is the PLL clock</span>
<span class="token constant">SYSCTL_USE_OSC</span> <span class="token comment">// System clock is the osc clock</span>
时钟源选择
<span class="token constant">SYSCTL_OSC_MAIN</span> <span class="token comment">// Osc source is main osc</span>
<span class="token constant">SYSCTL_OSC_INT</span> <span class="token comment">// Osc source is int. osc</span>
<span class="token constant">SYSCTL_OSC_INT4</span> <span class="token comment">// Osc source is int. osc /4</span>
<span class="token constant">SYSCTL_OSC_INT30</span> <span class="token comment">// Osc source is int. 30 KHz</span>
<span class="token constant">SYSCTL_OSC_EXT32</span> <span class="token comment">// Osc source is ext. 32 KHz</span>
外部晶振大小选择
<span class="token constant">SYSCTL_XTAL_1MHZ</span> <span class="token comment">// External crystal is 1MHz</span>
<span class="token constant">SYSCTL_XTAL_1_84MHZ</span> <span class="token comment">// External crystal is 1.8432MHz</span>
<span class="token constant">SYSCTL_XTAL_2MHZ</span> <span class="token comment">// External crystal is 2MHz</span>
<span class="token constant">SYSCTL_XTAL_2_45MHZ</span> <span class="token comment">// External crystal is 2.4576MHz</span>
<span class="token constant">SYSCTL_XTAL_3_57MHZ</span> <span class="token comment">// External crystal is 3.579545MHz</span>
除了以上的这些参数,还有一些别的参数可作选择,可以查看手册根据需要选择,这里只给出常用的一些。
</div>
本文由simyng创作,
采用知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
文章最后更新时间为:February 4th , 2020 at 05:00 pm