#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/rom.h"
#include "driverlib/gpio.h"
#include "driverlib/pwm.h"
#include "driverlib/fpu.h"
#include "driverlib/pin_map.h"
int main (void)
{
//使能FPU
FPUEnable();
FPULazyStackingEnable();
//设置系统时钟为50MHz
SysCtlClockSet(SYSCTL_SYSDIV_4 |SYSCTL_USE_PLL
|SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
//使能PWM模块
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
//使能PWM0输出所在GPIO
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
//配置PB6为PWM功能
//GPIOPinConfigure(GPIO_PB6_PWM0);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);
// PWM时钟配置:不分频
SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
//配置PWM发生器0:加减计数
PWMGenConfigure(PWM0_BASE,
PWM_GEN_0,PWM_GEN_MODE_UP_DOWN|
PWM_GEN_MODE_NO_SYNC);
//设置PWM发生器1的周期
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 60000);
//设置PWM2/PWM3输出的脉冲宽度
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 30000);
//使能PWM0的输出
PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT, true);
//使能PWM发生器0
PWMGenEnable(PWM0_BASE, PWM_GEN_0);
while(1)
{
}
}
上面就是我的PWM程序,板子是EK-TM4C123GXL,调用了PWM0模块,使用PB6输出PWM0,但是连接小灯就是不亮,用PB6配置成高电平数字输出就可以亮
user4036919:
不好意思各位,问题解决了,主要是一个GPIOPinConfigure函数没加,看来使用GPIO的复用功能是要调用两个库函数的,但还有一个小问题就是调用这个函数不知道为什么不能用宏定义#define GPIO_PB6_M0PWM0 0x00011804,总是提示报错。所以我只好自己把那个是六位数写进了函数。
xyz549040622:
回复 user4036919:
你好牛逼。。。你的那个宏定义应该使用过一次吧,所以不能定义了
user4036919:
回复 xyz549040622:
我找到那个宏定义就是在pin_map里,里面有多款芯片的宏定义,但是用不了,你的意思我不太懂啊
xyz549040622:
回复 user4036919:
你应该是找不到如何宏定义你使用的芯片吧,你找找我发的一个帖子,如何从零开始配置CCS工程,那里面有介绍