zoukankan      html  css  js  c++  java
  • 101-CH579M学习开发-基本外设-定时器

    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH579M" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

    说明

    先看一下默认的优先级

    什么是定时器?定时器具体是怎么到了时间进去中断的?

    定时器里面是啥?就是个计数器.定时器的时钟,就是计数器的时钟.假设计数器的时钟是1Hz

    假设设置了计数器计数到1的时候就进入中断,那么就是每隔1S进入中断了.

    假设计数器的时钟是32MHz,我想每隔1ms进入一次中断,我应该设置计数值是多少呢???

    计数器记一次是 1/32000000 秒    1/32000 毫秒  

    需要多少个 1/32000 毫秒  才能到1ms呢?  1/(1/32000) = 32000

    定时多少毫秒,设置初值可以写成     X*32000   X就是要定时的ms数

    一次性解决战斗

    int main()
    {
        /*ÅäÖô®¿Ú1*/
        GPIOA_SetBits(GPIO_Pin_9);
        GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);     // RXD-ÅäÖÃÉÏÀ­ÊäÈë
        GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);// TXD-ÅäÖÃÍÆÍìÊä³ö£¬×¢ÒâÏÈÈÃIO¿ÚÊä³ö¸ßµçƽ
        UART1_DefInit();
        
        /*ÅäÖö¨Ê±Æ÷0,¶¨Ê±Æ÷µÄʱÖÓÊÇFREQ_SYS*/
        TMR0_TimerInit( 10*(FREQ_SYS/1000) );   //¶¨Ê±10ms
        TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END); //ʹÄܶ¨Ê±Æ÷ÖÜÆÚÖжÏ
        NVIC_SetPriority(TMR0_IRQn,18);//ÉèÖÃÖжÏÓÅÏȼ¶(Ò²¿ÉÒÔ²»ÉèÖÃ,ĬÈÏ3)
        NVIC_EnableIRQ( TMR0_IRQn );
        
        while(1)
        {
        }
    }
    
    /*TMR0ÖÜÆÚÖжÏ*/
    void TMR0_IRQHandler( void )
    {
        if( TMR0_GetITFlag( TMR0_3_IT_CYC_END ) )
        {
            TMR0_ClearITFlag( TMR0_3_IT_CYC_END );
            PRINT("1
    ");//´òÓ¡Òý½Å״̬
        }
    }

  • 相关阅读:
    转载【工具】目前几种常见的线上接口文档管理平台的比较
    最好的Julia语言
    称霸Kaggle的十大深度学习技巧
    AI以假乱真怎么办?TequilaGAN教你轻松辨真伪
    2018 CISCN reverse
    2018 CISCN Writeup
    加壳&脱壳
    脱upx壳--初试--单步追踪
    Linux
    hackme.inndy.tw
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/15029526.html
Copyright © 2011-2022 走看看