辉芒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
  •           FT61F023  SOP16 
    
  •           ---------------
    
  • 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
  •   	    ---------------
    

*/

#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<Time;a++)
{
	NOP();
}
}   

/*----------------------------------------------------
* 函数名:DelayMs
* 功能:  短延时函数
* 输入:  Time 延时时间长度 延时时长Time ms
* 输出:  无
 ----------------------------------------------------*/
void DelayMs(unsigned char Time)
{
unsigned char a,b;
for(a=0;a<Time;a++)
{
	for(b=0;b<5;b++)
	{
	 	DelayUs(197);     //快1%
	}
}

}

/*-------------------------------------------------
* 函数名: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时钟源]
  • 		=2^0*2^8*[(62+1)/16000000]=1.008ms
                 
                                      * 	PWM5周期=2^TMRXPS*2^PXPER*[(T5CKDIV+1)/PWM时钟源]
    
  •   	=2^0*2^8*[(124+1)/16000000]=2ms
    
      
      * 设置PWM3周期=2^TMRXPS*2^PXPER*[(T3CKDIV+1)/PWM时钟源]
    
  •   	=2^16*2^4*[(9+1)/16000000]=0.6S
    

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

 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();
}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高级例程-基于两个mini板的CAN通讯是一种使用CAN(Controller Area Network)协议进行通信的方式。CAN是一种面向实时的通信协议,常用于车载系统、工业自动化、航空航天等领域。 在本例程中,我们使用两个mini板,一个作为发送方,一个作为接收方。两个mini板通过CAN总线相连,利用CAN通信协议进行数据的交换。 首先,我们需要正确配置两个mini板的CAN通信参数,包括波特率和CAN标识符等。然后,发送方通过CAN总线发送数据帧,包含了数据和标识符。接收方监听CAN总线上的数据帧,如果接收到与自身标识符匹配的数据帧,则接收方会解析数据并进行相应的操作。 这个例程可以实现不同设备之间的数据交换和控制。例如,我们可以将一个mini板作为温度传感器,实时采集环境温度,并将数据通过CAN发送给另一个mini板,作为数据接收方。接收方可以根据接收到的温度数据,进行相应的控制,例如触发报警、控制风扇等。 使用高级例程-基于两个mini板的CAN通讯,可以简化数据传输和通信过程,提高系统的可靠性和实时性。同时,CAN通信协议也具有良好的抗干扰性能,适用于工业环境等复杂场景。 总之,高级例程-基于两个mini板的CAN通讯是一种基于CAN协议的通信方式,可以实现不同设备之间的数据传输和控制。它具有高可靠性、实时性和抗干扰性等优点,在各种应用领域有着广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值