最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

嵌入式ARM复习题2(含答案

来源:动视网 责编:小OO 时间:2025-09-26 16:30:16
文档

嵌入式ARM复习题2(含答案

六、要求在P0.9引脚输出如图周期信号,已知Fpclk=11.0592M,请在用定时器实现代码。________||_____0.5s0.1s1.定时器定时方法(查询)voidTime0Init(void){T0PR=9;//设置定时器0分频为10分频,得110592HzT0MCR=0x03;//匹配通道0匹配中断并复位T0TCT0MR0=110592;//比较值(0.1S定时值)T0TCR=0x01;}intmain(void){inti=0;PINSEL0=0x00000000;//设置管
推荐度:
导读六、要求在P0.9引脚输出如图周期信号,已知Fpclk=11.0592M,请在用定时器实现代码。________||_____0.5s0.1s1.定时器定时方法(查询)voidTime0Init(void){T0PR=9;//设置定时器0分频为10分频,得110592HzT0MCR=0x03;//匹配通道0匹配中断并复位T0TCT0MR0=110592;//比较值(0.1S定时值)T0TCR=0x01;}intmain(void){inti=0;PINSEL0=0x00000000;//设置管
六、要求在P0.9引脚输出如图周期信号,已知Fpclk=11.0592M,请在用定时器实现代码。

________

|        |_____

 0.5s      0.1s

1. 定时器定时方法(查询)

void  Time0Init(void)

{  

    T0PR =  9;                    // 设置定时器0分频为10分频,得110592Hz

    T0MCR = 0x03;                   // 匹配通道0匹配中断并复位T0TC

    T0MR0 = 110592;            // 比较值(0.1S定时值)

    T0TCR = 0x01; 

}

int  main(void)

{  

    int i=0;

    PINSEL0 = 0x00000000;                    // 设置管脚连接GPIO   

IO0DIR = 1<<9;                         // 设置I/O为输出

    Time0Init();                                // 初始化定时器0    

    while(1)    

    {  

        while( (T0IR&0x01) == 0 );             // 等待定时时间到

        T0IR = 0x01;                         // 清除中断标志 

        i++;

if(i<=5) 

        {

IO0SET = 1<<9;    

        }

        else  

        {

            i=0;

IO0CLR = 1<<9;    

        }                

   }

   return(0);

}

定时器定时方法(中断)

void   __irq IRQ_Timer0(void)

{

        T0IR = 0x01;                            // 清除中断标志 

        i++;

if(i<=5) {  IO0SET = 1<<9;      }

        else {

             i=0;

IO0CLR = 1<<9;    

        }                

        VICVectAddr = 0;                    // 向量中断结束

}

void  INT_Init(void)

{

    VICIntSelect = 0x00000000;           

    VICVectCntl0 = 0x20|4;

    VICVectAddr0 = (int)IRQ_Timer0;   

VICIntEnable = 1<<4;    

}

void  Time0Init(void)

{  

    T0PR = 9;                 // 设置定时器0分频为100分频,得110592Hz

    T0MCR = 0x03;               // 匹配通道0匹配中断并复位T0TC

    T0MR0 = 110592;             // 比较值(0.1S定时值)

    T0TCR = 0x01; 

}

int i;

int  main(void)

{  

    IRQEnable();                        

    PINSEL0 = 0x00000000;                        // 设置管脚连接GPIO   

IO0DIR = 1<<9;                             // 设置I/O为输出

Time0Init();                                // 初始化定时器0    

INT_Init();

    while(1);

   return(0);

}

七、P236 请用程序实现通过P0.0口测量图中低电平脉冲的宽度。

T0TC = 0;

    T0PR = 0;

    while((IO0PIN & 0x01) != 0);

    T0TCR = 0x01;

    while((IO0PIN & 0x01) == 0);

    T0TCR = 0x00;

    time = T0TC;

八(1)、要求在P0.9引脚输出如图周期信号,已知Fpclk=11.0592M,请用PWM方法实现代码。

________

|        |_____

 0.5s      0.1s

      

int  main(void){  

PINSEL0 = 2<<18;                // 设置PWM6连接到P0.9管脚

PWMPR = 0x00;                    // 不分频,计数频率为Fpclk

PWMPCR = (0<<6)|(1<<14);     // 允许PWM6输出,单边PWM

    PWMMCR = 0x02;                // 设置PWMMR0匹配时复位PWMTC

    PWMMR0 = Fpclk*0.6 ;      // 设置PWM周期

    PWMMR6 = Fpclk*0.5 ;      // 设置PWM占空比

   

    PWMLER = 1|(1<<6);            // PWMMR0、PWMMR6锁存

PWMTCR = 0x09;                // 启动定时器,PWM使能

    While(1);

    return(0);

}

八(2)、要求在P0.9引脚输出如图周期信号,已知Fpclk=11.0592M,信号频率为5 Hz,请用PWM方法实现代码。

            _____________________

    ______ |                      |_______

      %  20              %60         %20

int  main(void){  

PINSEL0 = 2<<18;                // 设置PWM6连接到P0.9管脚

PWMPR = 0x00;                    // 不分频,计数频率为Fpclk

    PWMPCR = (1<<6)|(1<<14);     // 允许PWM6输出,双边PWM

    PWMMCR = 0x02;                // 设置PWMMR0匹配时复位PWMTC

    PWMMR0 = Fpclk/5 ;      // 设置PWM周期

    PWMMR5 = (Fpclk/5)*0.2 ;   

PWMMR6 = (Fpclk/5)*0.8 ;      

   

    PWMLER = 1|(1<<5)|(1<<6);    // PWMMR0、PWMMR5、PWMMR6锁存

PWMTCR = 0x09;                // 启动定时器,PWM使能

    while(1);

    return(0);

}

九、一个工程为了让LED常年不断闪烁引入了看门狗。看门狗的工程一般应用方法:用定时器产生一个固定中断时间,在中断服务程序里喂狗。

定时器初始化:

void  Time0Init(void)

{      

T0PR = 99;                        // 设置定时器0分频为100分频,得110592Hz

T0MCR = 0x03;                   // 匹配通道0匹配中断并复位T0TC

T0MR0 = 3*110592;                  // 比较值(3S定时值)

T0TCR = 0x03;                     // 启动并复位T0TC

T0TCR = 0x01;     

VICIntSelect = 0x00;              // 所有中断通道设置为IRQ中断

VICVectCntl0 = 0x24;        

VICVectAddr0 = (uint32)ISR_Time;   // 设置中断服务程序地址向量 

VICIntEnable = 0x00000010;            // 使能定时器0中断

}

看门狗初始化:

void WDT_INI()

{

    WDTC =  Fpclk ;          // 设置WDTC,喂狗重装值

    WDMOD = 0x03;              // 复位并启动WDT 

    WdtFeed();               // 进行喂狗操作 

}

中断里定时喂狗:

void __irq  ISR_Time(void)

{  

     WdtFeed();                     

    T0IR = 0x01;               // 清除中断标志

    VICVectAddr = 0x00;    // 通知VIC中断处理结束

}

主功能函数;

int  main(void)

{  

    PINSEL0 = 0x00000000;           // 设置管脚连接GPIO       

    IRQEnable();

    IO2DIR = LEDCON;   

    Time0Init();                       // 初始化定时器0及使能中断  

    WDT_INI();

    while(1){

            if( (IO2SET&LEDCON) == 0 )    {  IO2SET =LEDCON;       }

            else   {   IO2CLR =LEDCON;    }    

                DelayNS(50);   

    }

return(0);

}

文档

嵌入式ARM复习题2(含答案

六、要求在P0.9引脚输出如图周期信号,已知Fpclk=11.0592M,请在用定时器实现代码。________||_____0.5s0.1s1.定时器定时方法(查询)voidTime0Init(void){T0PR=9;//设置定时器0分频为10分频,得110592HzT0MCR=0x03;//匹配通道0匹配中断并复位T0TCT0MR0=110592;//比较值(0.1S定时值)T0TCR=0x01;}intmain(void){inti=0;PINSEL0=0x00000000;//设置管
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top