main.c
来自「使用 Keil C工具改写的zlg 的 lpc2131开发板一些程序」· C语言 代码 · 共 65 行
C
65 行
/**********************************************************************************************
程序移植:从ADS到KeilC
双边沿PWM输出实验。
**********************************************************************************************/
#include "main.h"
/*
*********************************************************************************************************
** 函数名称 :PWM_Init()
** 函数功能 :PWM初始化
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
void PWM_Init()
{
uint32 tmp;
tmp = Fpclk / 100;
PWMPR = 0x09; // 对pclk进行分频,PWM计数频率为Fpclk的1/10
PWMMCR = 0x02; // PWMMR0与PWMTC匹配时复位PWMTC
PWMPCR = (1 << 2) | // PWM2双边沿控制
(1 << 4) | // PWM4双边沿控制
(1 << 6) | // PWM6双边沿控制
(1 << 10) | // 使能PWM2输出
(1 << 12) | // 使能PWM4输出
(1 << 14); // 使能PWM6输出
PWMMR0 = tmp; // PWM速率控制/计数初值
/* 设置双边沿脉冲的脉宽和位置 */
PWMMR1 = 0; // PWM2的位置
PWMMR2 = (tmp / 8) * 7;
PWMMR3 = tmp / 4; // PWM4的位置
PWMMR4 = (tmp / 8) * 6;
PWMMR5 = (tmp / 8) * 3; // PWM6的位置
PWMMR6 = (tmp / 8) * 5;
PWMLER = 0x7F; // 锁存所有PWM匹配值
PWMTCR = 0x02; // 复位PWMTC
PWMTCR = 0x09; // 使能PWM
}
/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :演示双边沿PWM现象。
** 函数说明 :需要用多通道示波器或者逻辑分析仪进行观察
*********************************************************************************************************
*/
int main (void)
{
PINSEL0 = (2 << 14) | // P0.7连接PWM2
(2 << 16) | // P0.8连接PWM4
(2 << 18); // P0.9连接PWM6
PWM_Init(); // PWM初始化
while (1);
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?