• 辉芒PWM输出代码例程---1.5HZ


      /* 文件名:TEST_61F02x_PWM345.C
    * 功能:   FT61F02x-增强型PWM功能演示
    * IC:     FT61F023 SOP16
    * 晶振:   16M/2T                    
    * 说明:   此程序用来演示PWM345功能
    *		   演示程序中在PWM345脚分别输出2KHz,1KHz,500Hz
    *		   占空比的为50%的信号
    *          BY SOILFISH FOR FREEDOM 20230911
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    •           FT61F023  SOP16 
      
      • 1
    •           ---------------
      
      • 1
    • VDD---------|1(VDD) (VSS)16|--------GND
    • NC----------|2(PA7) (PA0)15|---------NC
    • NC----------|3(PA6) (PA1)14|---------NC
    • NC----------|4(PA5) (PA2)13|---------NC
    • PWM4--------|5(PC3) (PA3)12|---------NC
    • PWM5--------|6(PC2) (PC0)11|---------NC
    • NC----------|7(PA4) (PC1)10|---------NC
    • NC----------|8(PC5) (PC4)09|-------PWM3
    •   	    ---------------
      
      • 1

    */

    #include "SYSCFG.h"
    //********************宏定义***************************
    //PWM引脚输入输出控制
    #define	PWM3Dir	TRISC4
    
    #define    SW_ON    (PA1)
    
    volatile bit SW_STATUS;
    
    /*-------------------------------------------------
    
      * 函数名:interrupt
    * 功能:  中断处理
    * 输入:  无
    * 输出:  无
    --------------------------------------------------*/
    void interrupt ISR(void)	
    {
    NOP();
    }
    
    void DelayUs(unsigned char Time)
    {
    unsigned char a;
    for(a=0;a
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    }

    /*-------------------------------------------------
    * 函数名:POWER_INITIAL
    * 功能:  上电系统初始化
    * 输入:  无
    * 输出:  无
     --------------------------------------------------*/
    void POWER_INITIAL (void) 
    {
    //111 16M 
    OSCCON = 0B01000001;	//IRCF=111=16MHz/2=8MHz,0.125us
    INTCON = 0;  			//暂禁止所有中断
    PORTA = 0B00000000; 
    TRISA = 0B00000010; 	//PA输入输出 1-输入 0-输出
    PORTC = 0B00000000; 
    TRISC = 0B00000000;		//PC输入输出 1-输入 0-输出
    
    WPUA = 0B00000010;    	//禁止所有PA口上拉
    WPUC = 0B00000000;    	//禁止所有PC口上拉
    OPTION = 0B00001000;	//Bit3=1,WDT MODE,PS=000=WDT RATE 1:1
    MSCKCON = 0B00000000;
    
    //Bit6->0,禁止PA4,PC5稳压输出
    //Bit5->0,TIMER2时钟为Fosc
    //Bit4->0,禁止LVR       
    CMCON0 = 0B00000111; 	//关闭比较器,CxIN为数字IO口
    }
    
    /*-------------------------------------------------
    * 函数名:PWM_INITIAL
    * 功能:  PWM3,4,5初始化
    * 设置PWM3周期=2^TMRXPS*2^PXPER*[(T3CKDIV+1)/PWM时钟源]
    * 			=2^0*2^8*[(30+1)/16000000]=496us
    * 	PWM4周期=2^TMRXPS*2^PXPER*[(T4CKDIV+1)/PWM时钟源]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 		=2^0*2^8*[(62+1)/16000000]=1.008ms
                   
                                        * 	PWM5周期=2^TMRXPS*2^PXPER*[(T5CKDIV+1)/PWM时钟源]
      
      • 1
      • 2
      • 3
    •   	=2^0*2^8*[(124+1)/16000000]=2ms
      
        
        * 设置PWM3周期=2^TMRXPS*2^PXPER*[(T3CKDIV+1)/PWM时钟源]
      
      • 1
      • 2
      • 3
      • 4
    •   	=2^16*2^4*[(9+1)/16000000]=0.6S
      
      • 1

    --------------------------------------------------*/

     void PWM_INITIAL (void) 
    {
    PWM3Dir = 1;	//PWM3输出PIN暂为输入模式
    
    //-------------PWM3---------------  
    PWM3CR0 = 0B00110000;    //011 8bit OK    
    PWM3CR1 = 0B10101000;  //64 分频最低 3.8HZ  OK  
    TMR3H   = 0;
    
    //1.5Hz
    T3CKDIV = 80;	//赋值 
    PR3L    = 200;  //80%
    
     }
    
    /*-------------------------------------------------
    * 函数名:main
     * 功能:  主函数
    * 输入:  无
    * 输出:  无
    --------------------------------------------------*/
    void main(void)
    {	
    POWER_INITIAL(); 
    PWM_INITIAL();
    
    TMR3ON=1;
    PWM3Dir = 0;	//PWM3 PIN设为输出模式允许PWM输出
    
    
    SW_STATUS = 0;
    while(1)
    {	       
       NOP();
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
  • 相关阅读:
    策略模式结合Spring使用
    Android v1+v2 命令行签名
    Botowski:SEO友好的AI内容生成器
    使用 Hibernate Envers 进行实体审计
    LeetCode //C - 211. Design Add and Search Words Data Structure
    Java-微服务-谷粒商城-1-环境搭建&项目初始化
    Python爬虫要掌握哪些东西
    vue cli3.0 怎么配置 后端请求接口域名,区别打包环境及 vue项目域名的问题
    Vue3【Provide/Inject】
    HTML 之 块级元素、行内元素和行内块元素之间的嵌套规则
  • 原文地址:https://blog.csdn.net/weixin_44148981/article/details/132815842