⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 SmartARM2400系列开发板全套资料
💻 C
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**--------------------------------------------------------------------------------------------------------
** Created by:			zhangmingjie
** Created date:		2007-3-26
** Version:				1.0
** Descriptions:		双边沿PWM输出实验。
**--------------------------------------------------------------------------------------------------------
** Modified by:			wuzhijian
** Modified date:		2007-09-03
** Version:				
** Descriptions:		对程序的风格以及注释略作调整,并检查代码。
**
** Rechecked by:		Litiantian	
*********************************************************************************************************/
#include "config.h"

#define	  tmp1		Fpclk / 100

/*********************************************************************************************************
** 函数名称:  IO_Init
** 函数功能:  初始化I/O口,设P3.17、P1.6、P1.11为双边沿输出
** 入口参数:  无
** 出口参数:  无
*********************************************************************************************************/
void IO_Init(void)
{
	PINSEL7 = (PINSEL7 & (~(0x03 << 2)))  | (0x02 << 2);	            /* P3.17连接到PWM0.2(PWM2)    */
	PINSEL2 = (PINSEL2 & (~(0x03 << 12))) | (0x03 << 12);	            /* P1.6连接到PWM0.4(PWM4)     */
	PINSEL2 = (PINSEL2 & (~(0x03 << 22))) | (0x03 << 22);	            /* P1.11连接到PWM0.6(PWM6)     */
	}

/*********************************************************************************************************
** 函数名称:  PWM_Dbl_Init
** 函数功能:  初始化双边沿PWM输出。
** 入口参数:  无
** 出口参数:  无
*********************************************************************************************************/
void PWM_Dbl_Init(void)
{
	uint32 tmp;
	tmp 	= Fpclk / 100;

	PWM0PR  = 0x09;			                                            /* 对Fpclk进行分频,            */ 
	                                                                    /* PWM计数频率为Fpclk的1/10     */
	PWM0MCR = 0x02;			                                            /* PWMMR0与PWMTC匹配时复位PWMTC */
	PWM0PCR = (1 << 2)  |	                                            /* PWM2双边沿控制               */
		 	  (1 << 4)  |	                                            /* PWM4双边沿控制               */
			  (1 << 6)  |	                                            /* PWM6双边沿控制               */
			  (1 << 10) |	                                            /* 使能PWM2输出                 */
			  (1 << 12) |	                                            /* 使能PWM4输出                 */
			  (1 << 14);	                                            /* 使能PWM6输出                 */		  
	PWM0MR0 = tmp;			                                            /* PWM速率控制/计数初值         */
	
	/* 设置双边沿脉冲的脉宽和位置 */
	PWM0MR1 = 0;			                                            /* PWM2的置位位置               */
	PWM0MR2 = (unsigned long)(tmp / 8) * 7;                             /* PWM2的复位位置               */

	PWM0MR3 = (unsigned long)(tmp / 8) * 2;                             /* PWM4的置位位置               */
	PWM0MR4 = (unsigned long)(tmp / 8) * 6;                             /* PWM4的复位位置               */

	PWM0MR5 = (unsigned long)(tmp / 8) * 3;                             /* PWM6的置位位置               */
	PWM0MR6 = (unsigned long)(tmp / 8) * 5;                             /* PWM6的复位位置               */
	 
	PWM0LER = 0x7F;			                                            /* 锁存所有PWM匹配值            */
	PWM0TCR = 0x02;			                                            /* 复位PWMTC                    */
	PWM0TCR = 0x09;			                                            /* 使能PWM                      */
}

/*********************************************************************************************************
** 函数名称:  main
** 函数功能:  演示双边沿PWM现象。
** 入口参数:  无。
** 出口参数:  为0时表明函数出错。
** 函数说明:  需要用多通道示波器或者逻辑分析仪进行观察
*********************************************************************************************************/
int main(void)
{
	IO_Init();  			                                            /* 初始化I/O口,设置P1.11、     */
	                                                                    /* P1.6、P1.3为双边沿输出       */
	PWM_Dbl_Init();			                                            /* 初始化双边沿PWM输出,         */
	                                                                    /* 设好了相关寄存器之后,相应的 */
	                                                                    /* 管脚就有相应的双边沿的PWM输出*/
	while (1);
    return (0);
}
/*********************************************************************************************************
**                            End Of File
*********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -