当前位置: 编程技术>移动开发
本页文章导读:
▪dsPIC33EP timer2初始化设立及应用 dsPIC33EP timer2初始化设置及应用//文件 p33timer2.h
#ifndef _P33TIMER2_H_
#define _P33TIMER2_H_
//#include "p33timer2.h"
#define TIMER2_IEN_ENB _T2IE = 1
#define TIMER2_IEN_DIS _T2IE = 0
//timer2输入时钟分频
#define TIMER2_DIV1 .........
▪ dsPIC33EP 钟表初始化程序 dsPIC33EP 时钟初始化程序//文件名p33clk.h
#ifndef _P33CLK_H_
#define _P33CLK_H_
//#include "p33clk.h"
#define WDT_ENB _SWDTEN = 1
#define WDT_DIS _SWDTEN = 0
//时钟源选择
#define OSCLK0 0 //FRC
#define OSCLK1 1 //带PLL+N.........
▪ dsPIC33EP ADC模块初始化及应用范例 dsPIC33EP ADC模块初始化及应用实例//文件名 p33adc.h
#ifndef _P33ADC_H_
#define _P33ADC_H_
//#include "p33adc.h"
//--AD1CON1
#define ADON (1<<15)
#define MAUTO (7<<5) //采样后 自动转换模式
#define SAMP (1<<.........
[1]dsPIC33EP timer2初始化设立及应用
来源: 互联网 发布时间: 2014-02-18
dsPIC33EP timer2初始化设置及应用
//文件 p33timer2.h #ifndef _P33TIMER2_H_ #define _P33TIMER2_H_ //#include "p33timer2.h" #define TIMER2_IEN_ENB _T2IE = 1 #define TIMER2_IEN_DIS _T2IE = 0 //timer2输入时钟分频 #define TIMER2_DIV1 (0<<4) #define TIMER2_DIV8 (1<<4) #define TIMER2_DIV64 (2<<4) #define TIMER2_DIV256 (3<<4) //============================= extern void Init_Timer2(uint16 T2div,uint16 Tcon) ; #endif //文件 p33timer2.c #include "global.h" #include "p33timer2.h" //*************************************** // 函数名称:Init_Timer2 // 函数功能:初始化timer2 // 入口参数:时钟分频系数 定时器计数个数 // 出口参数:无 // 返回值:无 // Timer2 的时钟源 = Fp(即外设时钟) //*************************************** void Init_Timer2(uint16 T2div,uint16 Tcon) { T2CON = 0X0000|T2div ; PR2 = Tcon ; //重装载寄存器 TMR2 = 0x0000 ; //计数器清0 _T2IF = 0 ; _T2IE = 0 ; T2CON |= (1<<15) ; //开启定时器2 } //应用实例 void main(void) { //外设时钟64分频到时钟 计数7197次 Init_Timer2(TIMER2_DIV64,7197) ;//T2时钟源为外设时钟 TIMER2_IEN_ENB ;//开启定时器中断 // TIMER2_IEN_DIS ; while(1) { } }
[2] dsPIC33EP 钟表初始化程序
来源: 互联网 发布时间: 2014-02-18
dsPIC33EP 时钟初始化程序
//文件名p33clk.h #ifndef _P33CLK_H_ #define _P33CLK_H_ //#include "p33clk.h" #define WDT_ENB _SWDTEN = 1 #define WDT_DIS _SWDTEN = 0 //时钟源选择 #define OSCLK0 0 //FRC #define OSCLK1 1 //带PLL+N分频的FRC #define OSCLK2 2 //HS MS LS 外部时钟 #define OSCLK3 3 //带PLL的HS MS LS 外部时钟 #define OSCLK4 4 //保留 #define OSCLK5 5 //LPRC #define OSCLK6 6 //FRC/16 #define OSCLK7 7 //带N分频的FRC //处理器与CPU时钟分频比 #define DOZEDIV1 (0<<12) #define DOZEDIV2 (1<<12) #define DOZEDIV4 (2<<12) #define DOZEDIV8 (3<<12) #define DOZEDIV16 (4<<12) #define DOZEDIV32 (5<<12) #define DOZEDIV64 (6<<12) #define DOZEDIV128 (7<<12) //------------------------------ //Fosc = (Fin/V_FRCDIV/N1/N2)*M #define V_FRCDIV V_FRCDIV1 //FRC振荡分频系数 #define V_N1 V_N1DIV(2) //x = 2--33 N1 分频系数 #define V_N2 V_N2DIV2 //N2 分频系数 #define V_PLLFBD PLLMF(50) //(x=2--513)PLL 倍频比 //FRC 分频系数 #define V_FRCDIV1 0 #define V_FRCDIV2 1 #define V_FRCDIV4 2 #define V_FRCDIV8 3 #define V_FRCDIV16 4 #define V_FRCDIV32 5 #define V_FRCDIV64 6 #define V_FRCDIV256 7 //N1 #define V_N1DIV(x) (x-2) //N2 #define V_N2DIV2 0 #define V_N2DIV4 1 #define V_N2DIV8 3 //PLL 倍频数 M #define PLLMF(x) (x-2) //================================ extern void Init_Clk(uint16 OsClk) ; #endif //文件名p33clk.c #include "global.h" #include "p33clk.h" //*************************************** // 函数名称:InitClk // 函数功能:初始化时钟 // 入口参数:时钟来源选择 FRC分频 pll倍频比 // 出口参数:无 // 返回值:无 // Fosc = (Fin/V_FRCDIV/N1/N2)*M //*************************************** void Init_Clk(uint16 OsClk) { CLKDIV = 0X0000 ; //处理器与外设时钟比为1:1 _FRCDIV = V_FRCDIV ; //FRC分频系数 _PLLPOST = V_N2 ;//N2 _PLLPRE = V_N1 ;//N1 PLLFBD = V_PLLFBD ;// PLL倍频 OSCTUN = 0X0000 ; //振荡器调节寄存器 默认7.37M REFOCON = 0X0000 ; //参考时钟=系统时钟 OSCCON = 0X0000 ; _OSWEN = 1 ; //请求切换由NOSC指定的时钟 _NOSC = OsClk ; //切换 新的振荡器 while(_OSWEN) ;//等待时钟切换完成 if((_NOSC == OSCLK1) ||(_NOSC == OSCLK3))//带PLL { while(!_LOCK) ;//等待PLL锁定 } REFOCON |= 0X8000 ; //参考时钟输出使能 } //应用实例 -- 时钟初始化 //FRC 系统时钟1分频到CPU PLL倍频50 //Fin = 7.37M Fcpu = Fosc/2 = 46.0625M Init_Clk(OSCLK1) ;
[3] dsPIC33EP ADC模块初始化及应用范例
来源: 互联网 发布时间: 2014-02-18
dsPIC33EP ADC模块初始化及应用实例
//文件名 p33adc.h #ifndef _P33ADC_H_ #define _P33ADC_H_ //#include "p33adc.h" //--AD1CON1 #define ADON (1<<15) #define MAUTO (7<<5) //采样后 自动转换模式 #define SAMP (1<<1) #define DONE (1<<0) //ADC时钟选择--时钟分频 #define ADC_DIV1 (1-1) #define ADC_DIV5 (5-1) #define ADC_DIV10 (10-1) #define ADC_DIV25 (25-1) #define ADC_DIV50 (50-1) #define ADC_DIV100 (100-1) #define ADC_DIV250 (250-1) //--AD通道选择------ #define ADC_Chanel0 (0x00<<0) #define ADC_Chanel1 (0x01<<0) #define ADC_Chanel2 (0x02<<0) #define ADC_Chanel3 (0x03<<0) #define ADC_Chanel4 (0x04<<0) #define ADC_Chanel5 (0x05<<0) #define ADC_Chanel6 (0x06<<0) #define ADC_Chanel7 (0x07<<0) #define ADC_Chanel8 (0x08<<0) #define ADC_Chanel9 (0x09<<0) #define ADC_Chanel10 (0x0A<<0) #define ADC_Chanel11 (0x0B<<0) #define ADC_Chanel12 (0x0C<<0) #define ADC_Chanel13 (0x0D<<0) #define ADC_Chanel14 (0x0E<<0) #define ADC_Chanel15 (0x0F<<0) //================================ extern void Init_Adc(uint16 ClkDiv) ; extern uint16 AdcSwitch(uint16 Adc_Ch) ; #endif //文件名 p33adc.c #include "global.h" //#include "p33adc.h" //*************************************** // 函数名称:Init_Adc // 函数功能:初始化ADC模块 // 入口参数: // 出口参数:无 // 返回值:无 // ADC时钟来源于Fcpu //*************************************** void Init_Adc(uint16 ClkDiv) { AD1CON1 = 0X0000|MAUTO; //设置为自动模式 10位4通道模式 数据右对齐 AD1CON2 = 0X0000 ; AD1CON3 = 0X0000 | ClkDiv |0X8000; //ADC时钟分频 AD1CON4 = 0X0000 ; //不使能DMA 每个通道分一个字的缓存 AD1CHS123 = 0X0000 ; AD1CHS0 = 0X0000 ; AD1CSSH = 0X0000 ; AD1CSSL = 0X0000 ; AD1CON1 |= ADON ; //开启ADC模块工作 asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;//延时 asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ; } //*************************************** // 函数名称:AdcSwitch // 函数功能:选择AD通道转换 // 入口参数: // 出口参数:无 // 返回值:无 //*************************************** uint16 AdcSwitch(uint16 Adc_Ch) // ADRESH ADRESL { uint16 wTmp ; AD1CON1 |= ADON ; //开启ADC模块工作 AD1CHS0 = (AD1CHS0 & 0XFFE0)|Adc_Ch ;//选择通道 asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ;//延时 asm("nop") ;asm("nop") ;asm("nop") ;asm("nop") ; AD1CON1 &= ~DONE ; //ADC空闲 AD1CON1 |= SAMP ; //开始转换 while(!(AD1CON1 & DONE)) ; //等待转换完成 // AD1CON1 &= ~DONE ; //ADC空闲 wTmp = ADC1BUF0 & 0X03FF ; //读取转换结果 return wTmp ; } //应用实例 void main(void) { uint16 g_wTmp1 ; //初始化ADC Init_Adc(ADC_DIV25) ;//AD模块时钟输入频率 10BIT AD while(1) { g_wTmp1 = AdcSwitch(ADC_Chanel0) ;//读取转换结果 } }
最新技术文章: