飓风行动:半天掌握ARM Cortex-M3——API函数与系统时钟设定

需积分: 10 12 下载量 106 浏览量 更新于2024-08-17 收藏 7.99MB PPT 举报
"这篇资料是关于ARM Cortex-M3的嵌入式系统课程,重点介绍了相关API函数,特别是系统时钟设定。" 在嵌入式系统中,尤其是基于ARM Cortex-M3的微控制器设计中,系统时钟配置是至关重要的,因为它直接影响到整个系统的运行速度和功耗。`SysCtlClockSet`函数是用于设置系统时钟频率的关键API,它允许开发者精确地控制微控制器的工作速度。 首先,`SysCtlClockSet(unsigned long ulConfig)`函数的参数`ulConfig`是一个组合常量,用于定义系统时钟的各种配置选项。在提供的示例中: 1. `SYSCTL_SYSDIV_1` 表示系统分频器设置为1,这意味着系统时钟将直接来自选定的时钟源,未经任何分频。 2. `SYSCTL_USE_OSC` 指定使用外部晶体振荡器(OSC)作为时钟源。 3. `SYSCTL_XTAL_16MHZ` 表示外部晶体振荡器的频率为16MHz。 4. `SYSCTL_OSC_MAIN` 表明选择主时钟源。 第一条示例代码: ```c SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN); ``` 这段代码设置系统使用外部16MHz的晶振,不启用PLL(锁相环),因此系统时钟频率为16MHz。 第二条示例代码: ```c SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN); ``` 这个例子中,系统启用了PLL,并且设置了系统分频器为4,意味着PLL的输出被分频4倍后作为系统时钟。假设PLL输出频率为200MHz,那么系统时钟将是200MHz / 4 = 50MHz。 ARM Cortex-M3是ARM公司Cortex系列的一部分,专为嵌入式应用设计,特别是微控制器市场。Cortex-M3采用Thumb-2指令集,提高了性能并降低了成本。它拥有单周期Flash执行、快速中断控制器、硬件乘法器和除法器、多种节能模式以及强大的调试功能。相比旧的ARM7处理器,Cortex-M3在执行效率上有了显著提升,同时在代码大小和功耗方面也进行了优化。 在中断处理方面,Cortex-M3的Nested Vector Interrupt Controller (NVIC) 支持高达240个中断,具有32级优先级,大大提高了实时响应能力。与早期的ARM7TDMI相比,NVIC提供了确定性的中断进入时间,仅需6个时钟周期,而无需复杂的汇编代码,使得系统开发更加方便。 总结起来,这个课程主要讲解了如何利用API函数配置ARM Cortex-M3的系统时钟,以及Cortex-M3相对于ARM7的优势,包括其性能、功耗管理、中断处理和调试特性。这对于理解和开发基于Cortex-M3的嵌入式系统至关重要。