当前位置:文档之家› 嵌入式系统设计课设报告分析解析

嵌入式系统设计课设报告分析解析

福州大学《嵌入式系统设计课设》报告书题目:基于28027的虚拟系统姓名:学号:学院:电气工程与自动化学院专业:电气工程与自动化年级:起讫日期:指导教师:目录1、课程设计目的 (1)2、课程设计题目和实现目标 (1)3、设计方案 (1)4、程序流程图 (1)5、程序代码 (1)6、调试总结 (1)7、设计心得体会 (1)8、参考文献 (1)1、课程设计目的《嵌入式系统设计课设》是与《嵌入式系统设计》课程相配套的实践教学环节。

《嵌入式系统设计》是一门实践性很强的专业基础课,通过课程设计,达到进一步理解嵌入式芯片的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。

培养大胆发明创造的设计理念,为今后就业打下良好的基础。

通过课程设计,掌握以下知识和技能:1.嵌入式应用系统的总体方案的设计;2.嵌入式应用系统的硬件设计;3.嵌入式应用系统的软件程序设计;4.嵌入式开发系统的应用和调试能力2、课程设计题目和实现目标课程设计题目:基于28027的虚拟系统任务要求:A、利用28027的片上温度传感器,检测当前温度;B、通过PWM过零中断作为温度检测A/D的触发,在PWM中断时完成温度采样和下一周期PWM占空比的修正;PWM频率为1K;C、利用按键作为温度给定;温度给定变化从10度到40度。

D、当检测温度超过给定时,PWM占空比增减小(减小幅度自己设定);当检测温度小于给定时,PWM占空比增大(增大幅度自己设定);E、把PWM输出接到捕获口,利用捕获口测量当前PWM的占空比;F、把E测量的PWM占空比通过串口通信发送给上位机;3、设计方案-----介绍系统实现方案和系统原理图①系统实现方案:任务A:利用ADC模块通道A5获取当前环境温度。

任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将当前环境温度和按键设定温度进行比较,并按照任务D的要求修订PWM占空比。

PWM频率为1K HZ:根据关系式:TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)取SYSCLKOUT=60M HZ,HSPCLKDIV=6,CLKDIV=1,求得TBCLK=10M HZ。

将period设为10K,便得到1K HZ 的PWM波。

任务C:用KEY模块的中断实现温度给定。

任务D:在PWM的周期结束产生的中断中,通过改变比较点CMPA的位置来改变PWM占空比的大小。

任务E:利用CAP模块设置3个捕获点捕获PWM的上升沿和下降沿,计算得到PWM波的占空比。

任务F:利用SCI模块实现串口通信将温度和占空比上传到上位机。

此外,各模块的配置都与GPIO模块有关。

②系统原理图:28027 C2000 Piccolo Launchpad原理图4、程序流程--------各个模块的流程图5、程序代码①/*app.c*/// the includes#include"Application/app.h"//************************************************************** ************// the defines************************************************************** ************// the globals//************************************************************** ************// the functionsvoid delay(uint32_t time){while(time--);}//延时函数// end of file②/*isr.c*/// the includes#include"Application/isr.h"//************************************************************** ************// the defines//************************************************************** ************// the globals//************************************************************** ************// the functionsinterrupt void LED_PWM_isr(void) //PWM的中断服务函数{if(MY_ADC<SET_TEMP) //环境检测温度小于设定温度时mycmp-=100*(SET_TEMP-MY_ADC); //PWM占空比增大}else{mycmp+=100*(MY_ADC-SET_TEMP); //环境检测温度大于设定温度 // PWM占空比减小}PWM_setCmpA(myPwm1,mycmp); //设定CmpA值PWM_clearIntFlag(myPwm1); //清零PWM中断标志位PIE_clearInt(myPie,PIE_GroupNumber_3); //清零PIE中断标志位 mycmp=5000; //将比较点初值设为5000}interrupt void MY_ADC_isr(void) //ADC中断服务函数{ MY_ADC=ADC_readResult(myAdc,ADC_ResultNumber_0);//获取ADC转换的数字量MY_ADC= ADC_getTemperatureC(myAdc, MY_ADC);//将数字量转换为温度值ADC_clearIntFlag(myAdc, ADC_IntNumber_1);//清除中断标志位PIE_clearInt(myPie,PIE_GroupNumber_10);}interrupt void KEY_xint1_isr(void) //按键中断服务函数{SET_TEMP++;if(SET_TEMP>40){SET_TEMP=10;}PIE_clearInt(myPie,PIE_GroupNumber_1);}interrupt void MY_CAP_isr(void) //CAP中断服务函数{uint32_t CapEvent1Count=0,CapEvent2Count=0,CapEvent3Count=0;float fPwmDuty=0.0;CapEvent1Count = CAP_getCap1(myCap);CapEvent2Count = CAP_getCap2(myCap);CapEvent3Count = CAP_getCap3(myCap);fPwmDuty = (float)(CapEvent2Count - CapEvent1Count) / (CapEvent3Count - CapEvent1Count); //计算PWM占空比fPwmDuty=fPwmDuty*100;NOW_PWM=(int)fPwmDuty;CAP_clearInt(myCap, CAP_Int_Type_CEVT3);CAP_clearInt(myCap, CAP_Int_Type_Global);// Acknowledge this interrupt to receive more interrupts from group 4PIE_clearInt(myPie, PIE_GroupNumber_4);}//redefined in Isr.h// end of file①/*F2802x_Device.h*/#include"F2802x_Component/include/adc.h"#include"F2802x_Component/include/clk.h"#include"F2802x_Component/include/flash.h"#include"F2802x_Component/include/gpio.h"#include"F2802x_Component/include/pie.h"#include"F2802x_Component/include/pll.h"#include"F2802x_Component/include/timer.h"#include"F2802x_Component/include/wdog.h"#include"F2802x_Component/include/sci.h"#include"F2802x_Component/include/cap.h"①/*Key.c*/// the includes#include"User_Component/Key/Key.h"//************************************************************** ************// the defines//************************************************************** ************// the globals//************************************************************** ************// the functions// the function prototypes//! \brief KEY initail//! \param[in] None//! \param[out] Nonevoid KEY_initial(void){}////! \brief KEY configure//! \param[in] None//! \param[out] Nonevoid KEY_config(void){ //按键为GPIO12设置为输入口//1. modeGPIO_setMode(KEY_obj, KEY1, GPIO_12_Mode_GeneralPurpose);//2. directionGPIO_setDirection(KEY_obj, KEY1, GPIO_Direction_Input);//3. pullupGPIO_setPullUp(KEY_obj, KEY1, GPIO_PullUp_Disable);//4. qualificationGPIO_setQualification(KEY_obj, KEY1, GPIO_Qual_Sync);}//! \brief ScanKey API//! \param[in] key//! \param[out] the state of KEYuint16_t ScanKey(const GPIO_Number_e key){return GPIO_getData(KEY_obj, key);}//! \param[in] None//! \param[out] Nonevoid KEY_INT_config(void){ //(3). register PIR vectorPIE_registerPieIntHandler(myPie, PIE_GroupNumber_1, PIE_SubGroupNumber_4, (intVec_t) &KEY_xint1_isr);//(4). module interrupt configurePIE_setExtIntPolarity(myPie,CPU_ExtIntNumber_1, PIE_ExtIntPolarity_FallingEdge);GPIO_setExtInt(myGpio, GPIO_Number_12, CPU_ExtIntNumber_1);//(5). enable module IEPIE_enableExtInt(myPie, CPU_ExtIntNumber_1);//(6). enable PIEIERx.yPIE_enableInt(myPie, PIE_GroupNumber_1, PIE_InterruptSource_XINT_1);//(7) enable CPU IERxCPU_enableInt(myCpu, CPU_IntNumber_1);}////! \brief Interrupt Service Routine//! \param[in] None//! \param[out] NoneTARGET_EXT interrupt void KEY_xint1_isr(void); //redefined in Isr.h// end of file/*Key.h*/#ifndef _KEY_H_#define _KEY_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/// For example// The module derived from GPIO#define KEY_obj myGpio //here myGpio is defined in System.h#define KEY1 GPIO_Number_12 //pinTARGET_EXT void KEY_initial(void);TARGET_EXT void KEY_config(void);TARGET_EXT void KEY_INT_config(void);TARGET_EXT interrupt void KEY_xint1_isr(void); //redefined in Isr.h/*-------end of hardware description -------------*/TARGET_EXT uint16_t ScanKey(const GPIO_Number_e key);/*-------end of API description -------------*/#define KEYPressed 1/*------- end of defines -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition②/*LED_PWM.c*/// the includes#include"User_Component/LED_PWM/LED_PWM.h"// the functionsvoid LED_PWM_initial(void){mycmp=0;}void LED_PWM_config(void){//GPIO的配置GPIO_setMode(myGpio,GPIO_Number_0,GPIO_0_Mode_EPWM1A);GPIO_setPullUp(myGpio,GPIO_Number_0,GPIO_PullUp_Disable);//PWM的配置CLK_disableTbClockSync(myClk);//PWM模块使能CLK_enablePwmClock(myClk,PWM_Number_1);//设置PWM的时钟//PWM_setClkDiv(myPwm1,PWM_ClkDiv_by_1);PWM_setHighSpeedClkDiv(myPwm1, PWM_HspClkDiv_by_6);//计数器的设置PWM_setCounterMode(myPwm1,PWM_CounterMode_Up);//PWM周期设置PWM_setPeriod(myPwm1,10000);//设置周期加载模式PWM_setPeriodLoad(myPwm1,PWM_PeriodLoad_Shadow);//比较点的设置PWM_setCmpA(myPwm1,5000);//PWM装载模式PWM_setLoadMode_CmpA(myPwm1,PWM_LoadMode_Period);//动作PWM_setActionQual_CntUp_CmpA_PwmA(myPwm1,PWM_ActionQual_Set); PWM_setActionQual_Period_PwmA(myPwm1,PWM_ActionQual_Clear);//时钟同步CLK_enableTbClockSync(myClk);}void LED_PWM_INT_config(void){PIE_registerPieIntHandler(myPie,PIE_GroupNumber_3,PIE_SubGroup Number_1,(intVec_t)&(LED_PWM_isr));//模块中断配置PWM_setIntMode(myPwm1,PWM_IntMode_CounterEqualPeriod);PWM_setIntPeriod(myPwm1,PWM_IntPeriod_FirstEvent);//PWM中断使能PWM_enableInt(myPwm1);//PIE开关的允许PIE_enableInt(myPie, PIE_GroupNumber_3, PIE_InterruptSource_EPWM1);//CPU全局中断CPU_enableInt(myCpu,CPU_IntNumber_3);}// end of file/LED_PWM.h*/#ifndef _LED_PWM_H_#define _LED_PWM_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void LED_PWM_initial(void);TARGET_EXT void LED_PWM_config(void);TARGET_EXT void LED_PWM_INT_config(void);TARGET_EXT interrupt void LED_PWM_isr(void); //redefined in Isr.h/*-------end of hardware description -------------*/TARGET_EXT uint16_t mycmp;#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition③/*MY_ADC.c*/// the includes#include"User_Component/MY_ADC/MY_ADC.h"// the functionsvoid MY_ADC_initial(void){SET_TEMP=30; //初始设定温度为30摄氏度}void MY_ADC_config(void){ //ADC时钟使能CLK_enableAdcClock(myClk);//初始化ADC模块ADC_setVoltRefSrc(myAdc, ADC_VoltageRefSrc_Int);ADC_powerUp(myAdc);ADC_enableBandGap(myAdc);ADC_enableRefBuffers(myAdc);ADC_enable(myAdc);//温度转换使能ADC_enableTempSensor(myAdc);//soc配置ADC_setSocChanNumber(myAdc, ADC_SocNumber_0, ADC_SocChanNumber_A5);ADC_setSocSampleWindow(myAdc, ADC_SocNumber_0, ADC_SocSampleWindow_7_cycles);ADC_setSocTrigSrc(myAdc, ADC_SocNumber_0, ADC_SocTrigSrc_EPWM1_ADCSOCA);//PWM配置PWM_setSocAPulseSrc(myPwm1,PWM_SocPulseSrc_CounterEqualZero);PWM_setSocAPeriod(myPwm1,PWM_SocPeriod_FirstEvent);PWM_enableSocAPulse(myPwm1);}void MY_ADC_INT_config(void){PIE_registerPieIntHandler(myPie,PIE_GroupNumber_10,PIE_SubG roupNumber_1,(intVec_t)&(MY_ADC_isr));//模块中断配置ADC_setIntPulseGenMode(myAdc, ADC_IntPulseGenMode_Prior); ADC_setIntSrc(myAdc,ADC_IntNumber_1, ADC_IntSrc_EOC0);ADC_setIntMode(myAdc, ADC_IntNumber_1, ADC_IntMode_ClearFlag);//ADC中断使能ADC_enableInt(myAdc,ADC_IntNumber_1);//PIE开关的允许PIE_enableInt(myPie, PIE_GroupNumber_10, PIE_InterruptSource_ADCINT_10_1);//CPU全局中断CPU_enableInt(myCpu,CPU_IntNumber_10);}// end of file/*MY_ADC.h*/#ifndef _MY_ADC_H_#define _MY_ADC_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void MY_ADC_initial(void);TARGET_EXT void MY_ADC_config(void);TARGET_EXT void MY_ADC_INT_config(void);TARGET_EXT interrupt void MY_ADC_isr(void); //redefined in Isr.h/*-------end of hardware description -------------*/TARGET_EXT uint16_t MY_ADC;TARGET_EXT uint16_t SET_TEMP;/*------- end of globals -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition④/*MY_CAP.c*/// the includes#include"User_Component/MY_CAP/MY_CAP.h"#include"User_Component/User_Mcu/User_System.h"void MY_CAP_initial(void){}void MY_CAP_config(void){GPIO_setPullUp(myGpio, GPIO_Number_5, GPIO_PullUp_Enable);GPIO_setQualification(myGpio, GPIO_Number_5, GPIO_Qual_Sync);GPIO_setMode(myGpio, GPIO_Number_5, GPIO_5_Mode_ECAP1);CLK_enableEcap1Clock(myClk);CAP_disableInt(myCap, CAP_Int_Type_All); // 禁止CAP中断 CAP_clearInt(myCap, CAP_Int_Type_All); // 清除CAP中断标志位 CAP_disableCaptureLoad(myCap); // Disable CAP1-CAP4 register loadsCAP_disableTimestampCounter(myCap); // Make surethe counter is stopped// Configure peripheral registersCAP_setCapContinuous(myCap); // continuousCAP_setStopWrap(myCap, CAP_Stop_Wrap_CEVT4);// Stop at 3 eventsCAP_setCapEvtPolarity(myCap, CAP_Event_1, CAP_Polarity_Rising); // 捕获上升沿CAP_setCapEvtPolarity(myCap, CAP_Event_2, CAP_Polarity_Falling); // 捕获下降沿CAP_setCapEvtPolarity(myCap, CAP_Event_3, CAP_Polarity_Rising); // 捕获上升沿CAP_setCapEvtReset(myCap, CAP_Event_3, CAP_Reset_Enable); // 重置计数器确保计数器不会溢出CAP_enableTimestampCounter(myCap); // 打开计数器 CAP_enableCaptureLoad(myCap); // Enable CAP1-CAP4 register loads/* CAP_enableInt(myCap, CAP_Int_Type_CEVT3); // 3个捕获点之后发生中断// Register interrupt handlers in the PIE vector tablePIE_registerPieIntHandler(myPie, PIE_GroupNumber_4, PIE_SubGroupNumber_1, (intVec_t)&ecap1_isr);// Enable CPU INT4 which is connected to ECAP1-4 INT: CPU_enableInt(myCpu, CPU_IntNumber_4);// Enable eCAP INTn in the PIE: Group 3 interrupt 1-6PIE_enableCaptureInt(myPie);CPU_enableGlobalInts(myCpu);*/}void MY_CAP_INT_config(void){CAP_enableInt(myCap, CAP_Int_Type_CEVT3); // 3 events = interrupt// Register interrupt handlers in the PIE vector table PIE_registerPieIntHandler(myPie, PIE_GroupNumber_4, PIE_SubGroupNumber_1, (intVec_t)&MY_CAP_isr);// Enable CPU INT4 which is connected to ECAP1-4 INT:CPU_enableInt(myCpu, CPU_IntNumber_4);// Enable eCAP INTn in the PIE: Group 3 interrupt 1-6 PIE_enableCaptureInt(myPie);CPU_enableGlobalInts(myCpu);}// end of file/*MY_CAP.h*/#ifndef _MY_CAP_H_#define _MY_CAP_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void MY_CAP_initial(void);TARGET_EXT void MY_CAP_config(void);TARGET_EXT void MY_CAP_INT_config(void);TARGET_EXT interrupt void MY_CAP_isr(void); //redefined in Isr.h/*-------end of hardware description -------------*/TARGET_EXT int NOW_PWM;#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition⑤/*mySci.c*/// the includes#include"User_Component/mySci/mySci.h"// the functions// the function prototypes//! \brief SCI initail//! \param[in] None//! \param[out] Nonevoid SCI_initial(void){}////! \brief SCI configure//! \param[in] None//! \param[out] Nonevoid SCI_config(void){ //1. GPIO configure//1.1 pullupGPIO_setPullUp(myGpio, GPIO_Number_28, GPIO_PullUp_Enable); GPIO_setPullUp(myGpio, GPIO_Number_29, GPIO_PullUp_Disable);//1.2 input qualificationGPIO_setQualification(myGpio, GPIO_Number_28, GPIO_Qual_ASync);//1.3 modeGPIO_setMode(myGpio, GPIO_Number_28, GPIO_28_Mode_SCIRXDA);//SCI数据发送引脚GPIO_setMode(myGpio, GPIO_Number_29, GPIO_29_Mode_SCITXDA);//SCI数据接收引脚//2. enable SCIA clkCLK_enableSciaClock(myClk);//3. configure the low speed peripheral clock(LSPCLK) LSPCLK = SYSCLKOUT/4 =15MHzCLK_setLowSpdPreScaler(myClk,CLK_LowSpdPreScaler_SysClkOut_by_4);//设置时钟分频//4. SCI BRR = LSPCLK/(SCI BAUDx8) - 1SCI_setBaudRate(mySci, SCI_BaudRate_9_6_kBaud);//设置波特率为9600//5. configure package(1 stop bit, No loopback, No parity,8 char bits, async mode, idle-line protocol)SCI_disableParity(mySci);SCI_setNumStopBits(mySci, SCI_NumStopBits_One);SCI_setCharLength(mySci, SCI_CharLength_8_Bits);//6. enable SCI TX&RXSCI_enableTx(mySci);SCI_enableRx(mySci);//7.configure the SCI TX&RX FIFO//7.1 enable FIFO//先进先出SCI_resetChannels(mySci);SCI_enableFifoEnh(mySci);//7.2 configure TX FIFOSCI_resetTxFifo(mySci);//7.3 configure RX FIFOSCI_resetRxFifo(mySci);//8. enable SCI moduleSCI_enable(mySci);}//! \brief Transmit a string from the SCI//! \param[in] string//! \param[out] Nonevoid scia_msg(char * msg){int i;i = 0;while(msg[i] != '\0'){scia_xmit(msg[i]);i++;}}//! \brief Transmit a char from the SCI//! \param[in] char//! \param[out] Nonevoid scia_xmit(int a){while(SCI_getTxFifoStatus(mySci) != SCI_FifoStatus_Empty) {} SCI_putDataBlocking(mySci, a);}//! \brief Receive a char from the SCI//! \param[in] None//! \param[out] a:receive data//! 00: no received /00: receivedint scia_receive(uint16_t *a){if(SCI_getRxFifoStatus(mySci) < SCI_FifoStatus_1_Word){ return 0;}else{*a = SCI_getData(mySci);}return 1;}// end of file/*mySci.h*//#ifndef _MYSCI_H_#define _MYSCI_H_//**************************************************************************// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*///// the function prototypes//! \brief SCI initail//! \param[in] None//! \param[out] NoneTARGET_EXT void SCI_initial(void);////! \brief SCI configure//! \param[in] None//! \param[out] NoneTARGET_EXT void SCI_config(void);///*******************************************///! \brief Interrup configure//! \param[in] None//! \param[out] None//TARGET_EXT void SCI_INT_config(void);////! \brief CPU Timer0 Interrupt Service Routine//! \param[in] None//! \param[out] None//TARGET_EXT interrupt void SCI_isr(void); //redefined in Isr.h/*-------end of hardware description -------------*/TARGET_EXT void scia_msg(char * msg);TARGET_EXT void scia_xmit(int a);TARGET_EXT int scia_receive(uint16_t *a);/*-------end of API description -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition⑥/*User_System.c*/#include"User_Component/User_Mcu/User_System.h"// system initialvoid System_initial(void){}void System_config(void) //system config{//0.myCpu = CPU_init((void *)NULL, sizeof(CPU_Obj));myWDog = WDOG_init((void*)WDOG_BASE_ADDR, sizeof(WDOG_Obj)); myPll = PLL_init((void *)PLL_BASE_ADDR, sizeof(PLL_Obj));myClk = CLK_init((void *)CLK_BASE_ADDR, sizeof(CLK_Obj));myGpio = GPIO_init((void*)GPIO_BASE_ADDR, sizeof(GPIO_Obj));myPie = PIE_init((void*)PIE_BASE_ADDR, sizeof(PIE_Obj)); //中断指针赋值myTimer0 = TIMER_init((void*)TIMER0_BASE_ADDR, sizeof(TIMER_Obj)); // CPU Timer0myPwm1 = PWM_init((void*)PWM_ePWM1_BASE_ADDR, sizeof(PWM_Obj)); // PWM1myPwm2 = PWM_init((void*)PWM_ePWM2_BASE_ADDR, sizeof(PWM_Obj)); // PWM2myAdc = ADC_init((void *)ADC_BASE_ADDR, sizeof(ADC_Obj));mySci = SCI_init((void*)SCIA_BASE_ADDR, sizeof(SCI_Obj)); // SCIAmyCap = CAP_init((void *)CAPA_BASE_ADDR, sizeof(CAP_Obj));// 1. disable watch DOGWDOG_disable(myWDog);// 2. disable interruptCPU_disableGlobalInts(myCpu);// 3. Select the internal oscillator 1(10MHz) as the clock sourceCLK_setOscSrc(myClk, CLK_OscSrc_Internal);// 4. Setup the PLL for x12 /2 which will yield 60Mhz = 10Mhz * 12 / 2PLL_setup(myPll, PLL_Multiplier_12, PLL_DivideSelect_ClkIn_by_2);// 5. PIE configurePIE_disable(myPie); //禁止PIEPIE_disableAllInts(myPie); //禁止PIE中断CPU_disableGlobalInts(myCpu);//CPU全局中断禁止CPU_clearIntFlags(myCpu); //CPU 中断标志位清零PIE_setDefaultIntVectorTable(myPie); //中断入口地址赋予默认值PIE_enable(myPie); //使能PIE}void SystemINT_start(void) //User PIE start{// (8)。

相关主题