飞思卡尔单片机高效C语言编程(中文)

合集下载

飞思卡尔8位单片机MC9S0813程序LCD编程C语言程序例

飞思卡尔8位单片机MC9S0813程序LCD编程C语言程序例
*功 能:初始化Lcd(HD44780),设置显示方式,清屏,AC自动+1 *
*参 数:无 *
*返 回:无 *
*-----------------------------------------------------*/
void LcdInit(void)
{
unsigned char i;
LcdData_D=0b11111111; //数据口为输出
Lcd_Command(0b00010100); //光标右移一个字符位,AC自动加1
Lcd_Command(0b00001100); //开显示,关光标显示,不闪烁
}
/*Lcd_Command:执行给定的cmd命令------------------------*
*功 能:执行给定的cmd命令,且延时 *
LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
LcdCtrl&=~(1<<LcdRW);
Lcd_Command(0b10000000); //后7位为DDRAM地址0x00
LcdCtrl|=1<<LcdRS;//RS、R/W=10,写数据到DDRAM中
LcdCtrl&=~(1<<LcdRW);
LcdData=cmd;//把指令码送到Lcd数据传送口
LcdCtrl|=(1<<LcdE); //Lcd开始接收数据
asm("NOP");
asm("NOP");
asm("NOP");
LcdCtrl&=~(1<<LcdE); //Lcd结束接收数据

飞思卡尔智能车dg128单片机控制程序代码

飞思卡尔智能车dg128单片机控制程序代码
}
void AD_Init(void)
{
ATD0CTL2=0xC0; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
ATD0CTL3=0x44; //每次转换8个序列, FIFO, Freeze模式下继续转
ATD0CTL4=0x02; //10位精度, 采样时间为2个AD时钟周期,ATDClock=4MHz
//设置舵机
PWMCTL_CON01=1; //使得通道0,1成为16位pwm
PWMPER0 =0x75;
PWMPER1 =0x30; //舵机的频率是: 24M/8/30000=100Hz,T=10ms
PWMDTY01=4500; // 对应为4500/30000的占空比,待调整
Infrared_detect();
data_handle();
motor_ctl();
steer_ctl();
}
}
void interrupt 26 MDC_ISR(void)
{
static unsigned int number_count=0; static unsigned int start=0; static
go=2;
if(begin>=150)
go=3;
}
}
}
//-----系统初始化-----------------------
void system_init(void) //system initiat
void speed_ctl(void); //速度控制
void motor_ctl(void); //电机控制
void PACBInit(void);

飞思卡尔DG128_PE编程入门教程

飞思卡尔DG128_PE编程入门教程

飞思卡尔DG128—PE编程入门教程(1)首先打开CodeWarrior 5.0 开发环境,然后在弹出的选项中选择新建工程注释:如果没有弹出这个对话框,可以在下面的File中选择New Project新建一个工程。

(2) 选择开发芯片的型号(这里我们使用的是MC9S12DG128)接着选择TBDML,这个是我们使用在线调试功能的选项。

(3) 选择工程的生成路径,注意:如果我们不使用PE编程功能的话,在这步结束后,可以直接选择完成按钮来完成工程的新建。

(4) (PE编程功能的步骤)下一步,这个对话框我们什么都不用选择,直接点击下一步。

(5)选择下面这个选项来启动PE编程功能。

(6) 红色边框中选项的功能为是否启动浮点数据的使用,默认第一个是不启用;第二个是启用,float数据为32位,double为32位;第三个是启用,float 数据为32位,double数据为64位。

(7)最后一步什么都不要设置,直接点击完成。

(8) 以上步骤我们完成了一个DG128工程的新建步骤。

PE的使用步骤:(1) 新建工程后,会自动弹出个芯片封装型号的选择,选择后点击OK。

(注意:我们学校使用的芯片是112管脚,所以注意选择红线标注的选项)(2) 点击OK后,就会出现我们要编程的环境了。

如下所示:(3)红色标注的地方就是该工程的工作区。

细心的同学就会发现,它生成的文件中没有我们需要写的源文件XXX.c 。

那我们现在就来生成这些文件,找到下图的选项Processor Expert 。

然后点击第二个选项的Generate Code ' XXX .mcp' (这里的XXX 表示该工程名称)。

下面是自动生成的文件。

这时候发现软件为我们自动的生成了一个Project.c (Project 是我这个工程建立的文件命,不同的工程文件名将导致这个名字不同)的文件。

这个就是我们将要编写的源文件了,它里面包含了主函数main()。

飞思卡尔单片机教学课件

飞思卡尔单片机教学课件
单片机采用先进的工 艺技术,具有高速的运算能力
和低功耗性能。
丰富的外设接口
飞思卡尔单片机集成了多种外 设接口,如UART、SPI、I2C、 ADC等,方便与外部器件进行 通信和控制。
易于开发
飞思卡尔单片机提供完善的开 发工具和文档,支持多种开发 语言,如C、汇编等,降低了开 发难度。
THANKS
感谢您的观看
无线通信
讨论无线通信技术在单片机网络通 信中的应用,如Wi-Fi、蓝牙等。
单片机与嵌入式系统
嵌入式系统概述
介绍嵌入式系统的基本概念、组成和特点,以及其在现代工业控 制、智能家居等领域的应用。
单片机与嵌入式系统的关系
阐述单片机在嵌入式系统中的地位和作用,以及如何将单片机应用 于嵌入式系统的开发。
嵌入式系统开发流程
智能家居控制系统主要涉及灯光、 空调、门窗、安防等家居设备的 控制,通过无线通信技术实现设 备间的互联互通。
工业自动化控制系统
工业自动化控制系统是利用飞思 卡尔单片机实现生产过程中的自
动化控制和监测的应用。
该系统可以实现生产线的自动化 运行、工艺参数的实时监测和调 整、设备故障的预警和诊断等功
能。
工业自动化控制系统主要涉及传 感器、执行器、人机界面等设备 的控制,提高生产效率和产品质
量。
智能交通系 统
智能交通系统是利用飞思卡尔单片机 实现交通信号灯的控制、车辆监测和 调度等功能的系统。
智能交通系统主要涉及交通信号灯、 摄像头、雷达等设备的控制,提高道 路通行效率和交通安全。
该系统可以实现交通信号的自适应调 整、车辆违章的自动识别和抓拍、路 况信息的实时发布等功能。
讨论如何根据实际需求, 为不同的任务分配优先级, 确保关键任务能够得到优 先处理。

C语言实现控制电机加减速正反转(飞思卡尔C代码)

C语言实现控制电机加减速正反转(飞思卡尔C代码)

C语言实现控制电机加减速正反转(飞思卡尔C代码)用单片机控制直流电动机的正反转、加减速的程序如何用C语言写参考一下这个例子吧。

#include#defineucharunignedchar#defineuintunignedintbitPW1=P2^0;bitPW2=P2^1;//控制电机的两个输入bitaccelerate=P2^2;//调速按键bittop=P2^3;//停止按键bitleft=P2^4;//左转按键bitright=P2^5;//右转按键#defineright_turnPW1=0;PW2=1//顺时针转动#defineleft_turnPW1=1;PW2=0//逆向转动#defineend_turnPW1=1;PW2=1//停转uintt0=25000,t1=25000;//初始时占空比为50%uinta=25000;//设置定时器装载初值25m设定频率为20Hzucharflag=1;//此标志用于选择不同的装载初值uchardflag;//左右转标志ucharcount;//用来标志速度档位voidkeycan();//键盘扫描voiddelay(ucharz);voidadjut_peed();//通过调整占空比来调整速度//某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某//voidmain(){keycan();//不断扫描键盘程序,以便及时作出相应的响应}}if(flag){flag=0;end_turn;a=t0;//t0的大小决定着低电平延续时间TH0=(65536-a)/256;TL0=(65536-a)%6;//重装载初值}ele{flag=1;//这个标志起到交替输出高低电平的作用if(dflag==0){right_turn;//右转}ele{left_turn;//左转}a=t1;//t1的大小决定着高电平延续时间TH0=(65536-a)/256;TL0=(65536-a)%6;//重装载初值}}TMOD=0某01;//工作方式寄存器软件起动定时器定时器功能方式1定时器0TH0=(65536-a)/256;TL0=(65536-a)%6;//装载初值ET0=1;//开启定时器中断使能EA=1;//开启总中断TR0=0;}//某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某//voiddelay(ucharz)//在12M下延时z毫秒{ uint某,y;for(某=z;某>0;某--)for(y=110;y>0;y--);}//某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某//voidkeycan(){if(top==0){TR0=0;//关闭定时器0即可停止转动end_turn;} if(left==0){TR0=1;dflag=1;//转向标志置位则左转}if(right==0){TR0=1;dflag=0;//转向标志复位则右转}if(accelerate==0){delay(5);//延时消抖if(accelerate==0){ while(accelerate==0);//等待松手count++;if(count==1){t0=20000;t1=30000;//占空比为百分之60}if(count==2){t0=15000;t1=35000;//占空比为百分之70}if(count==3){t0=10000;t1=40000;//占空比为百分之80}if(count==4){t0=5000;t1=45000;//占空比为百分之90}if(count==5){count=0;}}}}功能特点:1)总线速度高达40MHz,CAN总线:3个1Mbp的CAN总线,兼容CAN2.0A/B;2)128KB程序Flah和8KBDataFlah,用于实现程序和数据存储,均带有错误校正码(ECC);3)可配置A/D:16通道模数转换器;可选8位10位和12位精度,3μ的转换时间4)内嵌MSCAN模块用于CAN节点应用,内嵌支持LIN协议的增强型SIC模块和SPI模块;5)4通道16位计数器,CRG时钟和复位发生器:锁相环、看门狗、实时中断;增强型捕捉定时器;6)出色的低功耗特性,带有中断唤醒功能的10,实现唤醒休眠系统的功能;7)通道PWM:8位8通道或16位4通道PWM,易于实现电机控制。

山东大学飞思卡尔单片机教学C语言程序设计PPT课件

山东大学飞思卡尔单片机教学C语言程序设计PPT课件
所有函数访问; 在模块内声明静态的函数,只能被模块内其它函数调用。 如:static int func(int x,int y);当一个C语言工程由多个程序员进
行编写时,就不用担心自己所定义的函数与别人定义的重 名了。 如果在函数名和函数类型前加extern,则表示此函数是外部函 数,可以被其他文件中的函数调用。如: extern int func(int x,int y)。
12
第六章 C语言程序设计
File1.c #include <File2.h>
/* 包含文件FILE2.c中的函数 */
void main (void)
{ MyFunction(); MyFunction();
/* 第一次进入MyFunction之前,myVar=0 */ /* 第二次进入MyFunction之前,myVar=1 */
实验5:使用仿真方法,编写并调试复杂的C语言程序 1.自定义一个包含10个无符号int型的数组,数组元素分别是10, 9,8,7,6,5,4,3,2,1,0。使用冒泡排序法对该数组元 素进行从小到大排序,调试并观察存储器区数据变化,程序要 有注释。
2
第六章 C语言程序设计
本周实验安排
2.基于上个程序,把排序好的数组进行数字滤波:去除最大的3 个和最小的3个,剩下的求平均,调试并观察存储器区数据变化, 程序要有注释。 3.课本195页例2、例3,课本196页例4 调试并观察存储器区数据变化。
6
第六章 C语言程序设计
其它C语言基础知识参见补充课件: “补充(自己看)_C语言基础.PPT”
7
第六章 C语言程序设计
§6-2 MC9S12的C编程与ANSI C的不同
CodeWarrior数据类型

飞思卡尔MC9S12单片机实验程序

DDRB=0xff; //B口用于输出脉冲值
PORTB=0xff; //led灯全暗
TIOS=0x00; //设置定时器通道0为输入捕捉
TSCR1=0x80; //定时器使能
TSCR2=0x01; //设置自由计数器2分频,且禁止定时器溢出中断
TCTL4=0x02; //捕捉器仅下降沿捕捉
TIE=0x01; //允许定时器通道0的中断
}
}
void main(void) {
DDRB=0xff;
PORTB=0x00;
for(;;)
{
fun();
}
}
SCI
#include <hidef.h>
#include <mc9s12db128.h>
#pragma LINK_INFO DERIVATIVE "mc9s12db128b"
unsigned char pp=0xf0; //欲发送的数字
/*********串口初始化*********/
void init() {
DDRB=0xff;
PORTB=0xff; //开始led灯暗,即数据尚未接收
SCI0BD=52; //初始化波特率为9600
SCI0CR1=0x00; //八位无奇偶校验模式
SCI0CR2=0x2c; //接收中断允许
}
/**************写数据***********/
void interrupt 20 funck() {
unsigned char k;
k=read();
PORTB=~k;
}
SPI
不会,以后补充。
LED
#include <hidef.h> /* common defines and macros */

飞思卡尔HC(S)08系列单片机开发及C语言编程简介

1.CodeWarrior中建立新项目运行CodeWarrior(CW)集成开发平台,如图1-1所示在File菜单下点击New,弹出建立新项目的模板对话框,见图1-2。

一般的简便做法是在图1-2对话框左面的选择列表中选择“HC(S)08 New Project Wizard”,然后在右面的项目名“Project Name”输入条中,输入你要建立的新项目名字,再在“Location”一栏中用确定项目存放的文件夹路经,完成后按“OK”进入下一步。

你也可以在图1-2对话框左侧列表中选择“Empty Project”,这样生成的项目不包含任何文件,你必须在CodeWarrior中自己添加所有相关的文件内容。

我想除非有特殊理由,实际项目开发过程中很少采用这种麻烦的方式来建立自己的项目。

接下去是选择项目开发所用的编程语言,见图1-3。

最常用的当然是C语言编程。

有时因具体项目要求,除了C编程外还需要编写独立的汇编语言模块,那就再加选汇编工具(Assembly)。

C++编程在免费版和标准版CW下都不支持,只有在专业版下才可以使用。

编程语言选择完毕后按“Next”。

图1-1图1-2图1-3这时将出现如图1-4的对话框,让你选择项目开发对应的MCU 型号。

在CW5.x 版本下支持几乎所有的HC08和大部分HCS08单片机型号。

在最新的CW6.x 中,增加了飞思卡尔最低端的8位机(RS08系列)和低端32位处理器(Coldfire V1系列)的支持,但HC08系列的有些型号没有被包含在内。

由于HC08为比较老的产品系列,已经不推荐在新项目设计中选用,因此影响不会太大。

对于新用户来说,请尽量直接安装CW6.x 或以后推出的更新版本。

以典型的9S08系列为例,当你选择了一个MCU 型号后,在图1-4右侧会显示出所有针对该型号芯片可用的项目调试场景。

其中:∙ “Full Chip Simulator ”是芯片全功能模拟仿真,即无需任何目标系统的硬件资源,直接在你的PC 机上模拟运行单片机的程序,在模拟运行过程中可以观察调试程序的各项控制和运行流程,分析代码运行的时间,观察各种变量,等等。

飞思卡尔单片机编程共19页word资料

关于Codewarrior 中的 .prm 文件网上广泛流传的一篇文章讲述的是8位飞思卡尔单片机的内存映射,这几天,研究了一下Codewarrior 5.0 prm文件,基于16位单片机MC9S12XS128,一点心得,和大家分享。

有什么错误请指正。

正文:关于Codewarrior 中的.prm 文件要讨论单片机的地址映射,就必须要接触.prm文件,本篇的讨论基于Codewarrior 5.0 编译器,单片机采用MC9S12XS128。

通过项目模板建立的新项目中都有一个名字为“project.prm”的文件,位于ProjectSettings->Linker Files文件夹下。

一个标准的基于XS128的.prm文件起始内容如下:.prm文件范例:NAMESENDSEGMENTSRAM = READ_WRITE DATA_NEAR 0x2000 TO 0x3FFF;ROM_4000 = READ_ONLY DATA_NEAR IBCC_NEAR 0x4000 TO 0x7FFF;ROM_C000 =READ_ONLY DATA_NEAR IBCC_NEAR 0xC000 TO 0xFEFF;//OSVECTORS = READ_ONLY 0xFF10 TO 0xFFFF;READ_ONLY DATA_FAR IBCC_FAR 0x000800 TO 0x000BFF;EEPROM_01 =READ_ONLY DATA_FAR IBCC_FAR 0x010800 TO 0x010BFF;EEPROM_02 =READ_ONLY DATA_FAR IBCC_FAR 0x020800 TO 0x020BFF;EEPROM_03 =READ_ONLY DATA_FAR IBCC_FAR 0x030800 TO 0x030BFF;EEPROM_04 =READ_ONLY DATA_FAR IBCC_FAR 0x040800 TO 0x040BFF;EEPROM_05 =READ_ONLY DATA_FAR IBCC_FAR 0x050800 TO 0x050BFF;EEPROM_06 =READ_ONLY DATA_FAR IBCC_FAR 0x060800 TO 0x060BFF;EEPROM_07 =READ_ONLY DATA_FAR IBCC_FAR 0x070800 TO 0x070BFF;PAGE_F8 =READ_ONLY DATA_FAR IBCC_FAR 0xF88000 TO 0xF8BFFF;PAGE_F9 =READ_ONLY DATA_FAR IBCC_FAR 0xF98000 TO 0xF9BFFF;PAGE_FA =READ_ONLY DATA_FAR IBCC_FAR 0xFA8000 TO 0xFABFFF;READ_ONLY DATA_FAR IBCC_FAR 0xFB8000 TO 0xFBBFFF;PAGE_FC =READ_ONLY DATA_FAR IBCC_FAR 0xFC8000 TO 0xFCBFFF;PAGE_FE =READ_ONLY DATA_FAR IBCC_FAR 0xFE8000 TO 0xFEBFFF;ENDPLACEMENT_PRESTART,STARTUP,ROM_VAR,STRINGS,VIRTUAL_TABLE_SEGMENT,//.ostext,DEFAULT_ROM, NON_BANKED,COPYINTO ROM_C000 ;OTHER_ROM INTO PAGE_FE, PAGE_FC, PAGE_FB, PAGE_FA, PAGE_F9, PAGE_F8;//.stackstart,SSTACK,//.stackend,PAGED_RAM,DEFAULT_RAMINTO RAM;DISTRIBUTE DISTRIBUTE_INTOROM_4000, PAGE_FE, PAGE_FC, PAGE_FB, PAGE_FA, PAGE_F9, PAGE_F8;CONST_DISTRIBUTE DISTRIBUTE_INTOROM_4000, PAGE_FE, PAGE_FC, PAGE_FB, PAGE_FA, PAGE_F9, PAGE_F8;DATA_DISTRIBUTE DISTRIBUTE_INTORAM;//.vectors INTO OSVECTORS;ENDENTRIES//_vectab OsBuildNumber _OsOrtiStackStart _OsOrtiStartENDSTACKSIZE 0x100VECTOR 0 _Startup//VECTOR 0 Entry//INIT Entry1 .prm文件组成结构按所含的信息的不同.prm文件有六个组成部分构成,这里仅讨论和内存空间映射关系紧密的三个部分,其他的不做讨论。

飞思卡尔单片机的程序

#include "derivative.h"//-----------------------------------------------------static void SCI_Init(void){SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enableSCI0BDH=0x00; //busclk 8MHz,19200bps,SCI0BDL=0x1aSCI0BDL=0x68; //SCI0BDL=busclk/(16*SCI0BDL)//busclk 8MHz, 9600bps,SCI0BDL=0x34//busclk 8MHz, 9600bps,SCI0BDL=0x68//busclk 24MHz, 9600bps,SCI0BDL=0x9C} //busclk 32MHz, 9600bps,SCI0BDL=0xD0//busclk 40MHz, 9600bps,SCI0BD =0x104//-----------------------------------------------------static void Port_Init(void){DDRA = 0xff; //LCD1100,PA0--4,PA67 D1D2PORTA= 0x00;DDRB = 0xff; //LED PTB0--7,PORTB= 0xff; //LEDs onDDRE = 0xFF; //MOTOR CONTROLPORTE= 0x00; //PDDRH = 0x00; // PORTH inputPTIH = 0X00; // KEY,PH0--5PERH = 0xff; // PORTH pull upPPSH = 0x00; // Port H Polarity Select Register-falling edgePIEH = 0x02; // PORTH interrut disable but 1,DDRJ = 0X01; // PJ0判断行同步脉冲到达//PPSJ = 0x01; // Port J Polarity Select Register-rising EDGEPPSJ = 0x00; // Port J Polarity Select Register-falling EDGEPIEJ = 0X00; // VIDEO SYNC INTERRUPT DISABLED,BUT NOT IN MAIN() PERJ = 0xff;DDRP = 0xff;PERP = 0xff;PTP_PTP0 = 0;}//-----------------------------------------------------static void PWM_Init(void){//SB,B for ch2367//SA,A for ch0145PWMPRCLK = 0X55; //clockA,CLK B 32分频:500khzPWMSCLA = 0x02; //对clock SA 进行2*PWMSCLA=4分频;pwm clock=clockA/4=125KHz;PWMSCLB = 0X02; //clk SB=clk B/(2*pwmsclb)=125KHZ//pwm1PWMCNT1 = 0;PWMCAE_CAE1=0;PWMPOL_PPOL1=0;PWMPER1 =125;PWMDTY1 =100;PWMCLK_PCLK1 = 1;PWME_PWME1 = 0;}void AD_Init(void){A TD0CTL1=0x00; //7:1-外部触发,65:00-8位精度,4:放电,3210:chA TD0CTL2=0x40; //禁止外部触发, 中断禁止A TD0CTL3=0xa0; //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转A TD0CTL4=0x01; //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]A TD0CTL5=0x30; //6:0特殊通道禁止,5:1连续转换,4:1多通道轮流采样A TD0DIEN=0x00; //禁止数字输入}//-----------------------------------------------------//IOC7/PT7用于计算CS3144产生的脉冲数static void IOC_Init(void){TCTL3=0xc0;//c-输入捕捉7任何沿有效,TCTL4=0xc0;//40表示ICx禁止, 1表示上升沿, 2表示下降沿, 3表示任何沿TIE =0x00;//每一位对应相应通道中断允许,0表示禁止中断TIOS =0x00;//每一位对应通道的: 0输入捕捉,1输出比较TCTL3_EDG7x=1;//c-输入捕捉7任何沿有效,}//产生40ms的定式中断,读取IOC7的计数值static void Timer_Init(void){//TSCR1=0X80;//TIMER INT ENABLED//TSCR1=0x90;//计数器使能TEN|快速清零TFFCATSCR1=0X00; //禁止TIM//TSCR2=0X80;//DIV 1->2.5ms,enable time overflow interrrupt//TSCR2=0X82;//DIV 4->10ms//TSCR2=0X83;//DIV 8->20ms//TSCR2=0X84;//DIV 16->40msTSCR2=0X85;//DIV 32->80ms//TSCR2=0X86;//DIV 64->160ms//TSCR2=0X87;//DIV 128->320ms,enable time overflow interrruptTCNT =0; //PACTL=0X50; //PT7 PIN,PACN32 16BIT,FALLing edge,NOT INTERRUPT //PBCTL=0X40;//PBCN10 16BIT,INT DISABLED//ICPAR=0; //8BIT DISABLED}//-----------------------------------------------------// setup of the RTI interrupt frequencystatic void RTI_Init(void){//RTICTL=0x10; //2^10x40ms=4.96s//RTICTL=0X74; //SET PRESCALER,div rate=(m+1)x2^(n+9),(m=1-7,n=0-15)//tick=16Mhz/((4+1)x2^(7+9))=48.83,(/sec)//16000000/64k=244.140625 ,与晶振频率相关,与分频无关RTICTL=0x77; //8x2^16 =>32,75ms,30.5175Hz//RTICTL=0x7f; //16x2^16 =>,65.536ms,15.26Hz//RTICTL=0x1F; //16x2^10--1ms//CRGINT=0X80; //enable RTI InterruptCRGINT=0X00; //disable RTI Interrupt}static void Time_Start(void){RTI_Init();CRGINT=0X80; //enable RTI Interrupt}//-----------------------------------------------------// PLL初始化子程序BUS Clock=16Mvoid setbusclock(void){CLKSEL=0X00; // disengage PLL to systemPLLCTL_PLLON=1; // turn on PLLSYNR=0x00 | 0x01; // VCOFRQ[7:6];SYNDIV[5:0]// fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1)// fPLL= fVCO/(2 × POSTDIV)// fBUS= fPLL/2// VCOCLK Frequency Ranges VCOFRQ[7:6]// 32MHz <= fVCO <= 48MHz 00// 48MHz < fVCO <= 80MHz 01// Reserved 10// 80MHz < fVCO <= 120MHz 11REFDV=0x80 | 0x01; // REFFRQ[7:6];REFDIV[5:0]// fREF=fOSC/(REFDIV + 1)// REFCLK Frequency Ranges REFFRQ[7:6]// 1MHz <= fREF <= 2MHz 00// 2MHz < fREF <= 6MHz 01// 6MHz < fREF <= 12MHz 10// fREF > 12MHz 11// pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;POSTDIV=0x00; // 4:0, fPLL= fVCO/(2xPOSTDIV)// If POSTDIV = $00 then fPLL is identical to fVCO (divide by one)._asm(nop); // BUS CLOCK=16M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}//-----------------------------------------------------#pragma CODE_SEG DEFAULTvoid Init_Dev(void){setbusclock();Port_Init();SCI_Init();PWM_Init();AD_Init();Timer_Init();Time_Start();IOC_Init();}//-----------------------------------------------------。

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