AVR XMEGA 库函数驱动简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

返回值:无 3. CLKSYS_PLL_Config 锁相环(PLL)倍频因子的设置。 原型: void CLKSYS_PLL_Config( OSC_PLLSRC_t clockSource, uint8_t factor ) 参数: ClockSource:锁相环(PLL)输入振荡器
参数的数据类型为 OSC_PLLSRC_t,定义各种可能的振荡器来源,该枚举的定义如下: (定义在 io128a1.h) typedef enum OSC_PLLSRC_enum {
使能系统时钟锁存。当此位使能时,CTRL 和 PSCTRL 寄存器设置不能改变,并且系统时钟选
择和预分频器设置,在下次复位前无法更改。该位受到配置更改保护机制的保护。 原型:
void CLKSYS_Configuration_Lock( void ) 参数:无
返回值:无
D.2 串口驱动(usart_driver.c)
CLK_SCLKSEL_XOSC_gc = (0x03<<0), CLK_SCLKSEL_PLL_gc = (0x04<<0), } CLK_SCLKSEL_t;
// 外部振荡器 // 锁相环(PLL)
返回值:如果设置成功:返回 clockSource
如果设置不成功:返回 0
7. CLKSYS_RTC_ClockSource_Enable
AVR XMEGA 片内外设驱动简介
注:本内容出自《AVR XMEGA 高性能单片机开发及应用》一书的资料光盘,仅 作技术交流之用,不得用于任何商业用途!
由于 XMEGA 寄存器众多,采用 C 语言和汇编语言对 XMEGA 编程需要大量查找寄存器 的配置说明,不但影响编程效率,同时也给编程人员带来诸多痛苦。为了解决这个问题,在 底层寄存器与应用程序之间添加一层 XMEGA 片内外设驱动,这样编程人员在不了解底层寄 存器配置说明的情况下,仍然可以很好的使用一些特定的功能。
OSC_XOSCSEL_XTAL_1KCLK_gc = (0x07<<0), //时钟源:0.4 - 16 MHz XTAL
OSC_XOSCSEL_XTAL_16KCLK_gc = (0x0B<<0), //时钟源:0.4 - 16 MHz XTAL
} OSC_XOSCSEL_t;
参见表 2-6-6
选择实时计数器的时钟来源。 原型:
void CLKSYS_RTC_ClockSource_Enable( CLK_RTCSRC_t clockSource ) 参数:
clockSource:所选实时计数器时钟。 参数的数据类型为 CLK_RTCSRC_t,定义各种可能的时钟来源,该枚举的定义如下:(定
XMEGA 片内外设驱动函数简介见附录 C,XMEGA 片内外设驱动源代码见附录 D 与附录 E。
本章寄存器设置,参数选取均以 ATXMEGA128A1 为参考,其他型号 XMEGA 可能有所不同, 请参考相应型号的头文件。(以后百度文库再赘述)
D.1 时钟驱动(clksys_driver.c)
1. CCPWrite 该函数用于写受保护 I/O 寄存器。 原型:
义在 io128a1.h)
typedef enum OSC_XOSCSEL_enum
{
OSC_XOSCSEL_EXTCLK_gc = (0x00<<0),
//时钟源:外部时钟
OSC_XOSCSEL_32KHz_gc = (0x02<<0),
//时钟源:32.768 kHz TOSC
OSC_XOSCSEL_XTAL_256CLK_gc = (0x03<<0), // 时钟源:0.4 - 16 MHz XTAL
OSC_PLLSRC_RC2M_gc = (0x00<<6), //2 MHz 内部 RC 振荡器 OSC_PLLSRC_RC32M_gc = (0x02<<6), //32 MHz 内部 RC 振荡器 OSC_PLLSRC_XOSC_gc = (0x03<<6), //外部振荡器 } OSC_PLLSRC_t; 参见表 2-6-7 Factor:倍频因子。
参数的数据类型为 CLK_PSADIV_t,定义各种可能的 A 的取值,该枚举的定义如下:(定 义在 io128a1.h) typedef enum CLK_PSADIV_enum {
CLK_PSADIV_1_gc = (0x00<<2), //分频值 A 为 1 CLK_PSADIV_2_gc = (0x01<<2), //分频值 A 为 2 CLK_PSADIV_4_gc = (0x03<<2), //分频值 A 为 4 CLK_PSADIV_8_gc = (0x05<<2), //分频值 A 为 8 CLK_PSADIV_16_gc = (0x07<<2), //分频值 A 为 16 CLK_PSADIV_32_gc = (0x09<<2), //分频值 A 为 32 CLK_PSADIV_64_gc = (0x0B<<2), //分频值 A 为 64 CLK_PSADIV_128_gc = (0x0D<<2), //分频值 A 为 128 CLK_PSADIV_256_gc = (0x0F<<2), //分频值 A 为 256 CLK_PSADIV_512_gc = (0x11<<2), //分频值 A 为 512 } CLK_PSADIV_t; PSBCfactor:预分频B和C的值 参数的数据类型为 CLK_PSBCDIV_t,定义各种可能的 B 和 C 的取值,该枚举的定义如下: (定义在 io128a1.h) typedef enum CLK_PSBCDIV_enum { CLK_PSBCDIV_1_1_gc = (0x00<<0), //分频值B为1,C为1 CLK_PSBCDIV_1_2_gc = (0x01<<0), //分频值B为1,C为2 CLK_PSBCDIV_4_1_gc = (0x02<<0), //分频值B为4,C为1 CLK_PSBCDIV_2_2_gc = (0x03<<0), //分频值B为2,C为2 } CLK_PSBCDIV_t;
返回值:无 4. CLKSYS_Disable 关闭所选振荡器或关闭锁相环。 原型: uint8_t CLKSYS_Disable( uint8_t oscSel ) 参数: oscSel:所选振荡器使能位或锁相环使能位 可选参数如下: #define OSC_PLLEN_bm 0x10 //锁相环(PLL)使能位 #define OSC_XOSCEN_bm 0x08 //外部振荡器使能位 #define OSC_RC32KEN_bm 0x04 //内部 32kHz RC 振荡器使能位 #define OSC_RC32MEN_bm 0x02 //内部 32MHz RC 振荡器使能位 #define OSC_RC2MEN_bm 0x01 //内部 2MHz RC 振荡器使能位
1. uart_putc 输出字符。 原型: void uart_putc(unsigned char c) 参数: C:传进来的字符
返回值:无 2. uart_putc_hex 输出字符的ASCII码的十六进制形式。 原型: void uart_putc_hex(unsigned char b) 参数: C:传进来的字符
返回值:无
6. CLKSYS_Main_ClockSource_Select
选择系统时钟来源。 原型:
uint8_t CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_t clockSource ) 参数: clockSource:所选系统时钟。
参数的数据类型为 CLK_SCLKSEL_t,定义各种可能的时钟来源,该枚举的定义如下: typedef enum CLK_SCLKSEL_enum {
bool lowPower32kHz, OSC_XOSCSEL_t xoscModeSelection )
参数: freqRange:振荡器频率范围 参数的数据类型为 OSC_FRQRANGE_t,定义各种频率范围,该枚举的定义如下:(定义
在 io128a1.h) typedef enum OSC_FRQRANGE_enum { OSC_FRQRANGE_04TO2_gc = (0x00<<6), // 0.4 - 2 MHz OSC_FRQRANGE_2TO9_gc = (0x01<<6), //2 - 9 MHz OSC_FRQRANGE_9TO12_gc = (0x02<<6), //9 - 12 MHz OSC_FRQRANGE_12TO16_gc = (0x03<<6), //12 - 16 MHz } OSC_FRQRANGE_t; lowPower32kHz:32.768KHz 晶体振荡器低功耗模式选择。 该参数为布尔型,为真时选择 32.768KHz 晶体振荡器低功耗模式 为假时不选择 32.768KHz 晶体振荡器低功耗模式 xoscModeSelection:晶体振荡器选择 参数的数据类型为 OSC_XOSCSEL_t,定义各种可能的振荡器,该枚举的定义如下:(定
返回值:无 9. CLKSYS_XOSC_FailureDetection_Enable 使能振荡器失效检测功能。 原型: void CLKSYS_XOSC_FailureDetection_Enable( void ) 参数:无
返回值:无
10. CLKSYS_XOSC_FailureDetection_Enable
义在 io128a1.h) typedef enum CLK_RTCSRC_enum
{ CLK_RTCSRC_ULP_gc = (0x00<<1), //由内部 32 kHz ULP 产生 1 kHz CLK_RTCSRC_TOSC_gc = (0x01<<1), //由 TOSC 引脚上 32.768 kHz 晶振产生 1.024KHZ CLK_RTCSRC_RCOSC_gc = (0x02<<1),// 由内部 32.768 kHz RC 振荡器产生 1.024 kHz CLK_RTCSRC_TOSC32_gc = (0x05<<1),//TOSC 引脚上 32.768 kHz 晶振产生 32.768 kHz
返回值:如果设置成功:返回 oscSel
如果设置不成功:返回 0
5. CLKSYS_Prescalers_Config 相对系统时钟预分频器的设置
原型: void CLKSYS_Prescalers_Config( CLK_PSADIV_t PSAfactor,
CLK_PSBCDIV_t PSBCfactor ) 参数: PSAfactor:预分频A的值
} CLK_RTCSRC_t;
返回值:无
8. CLKSYS_AutoCalibration_Enable
使能内部振荡器校准参考。 原型: void CLKSYS_AutoCalibration_Enable( uint8_t clkSource, bool extReference ) 参数: clockSource:所选内部振荡器校准参考位。 extReference:布尔型,没有实际意义,设置内部振荡器校准参考时必须为真
void CCPWrite( volatile uint8_t * address, uint8_t value ) 参数:
Address:定义受保护 I/O 寄存器的地址 Value: 要写入受保护 I/O 寄存器的值
返回值:无 2. CLKSYS_XOSC_Config 该函数用于配置外部振荡器。 原型: void CLKSYS_XOSC_Config( OSC_FRQRANGE_t freqRange,
CLK_SCLKSEL_RC2M_gc = (0x00<<0), //内部 2MHz RC 振荡器 CLK_SCLKSEL_RC32M_gc = (0x01<<0), //内部 32MHz RC 振荡器 CLK_SCLKSEL_RC32K_gc = (0x02<<0), //内部 32KHz RC 振荡器
相关文档
最新文档