尊敬的所有人:
我正在尝试编写一个程序、使用 PWM 引脚(PK5)在 GPIO 上生成脉冲信号。
下面是我写的。 但是、当我检查 Pin 时、我没有得到任何信号。
有什么我可能弄乱了吗?
此致、
吉恩
//一个用于切换给定 GPIO 引脚的功能
//
#包括
#包括
#包括
#包括"inc/hw_memmap.h"
#包括"inc/hw_types.h"
#包括"inc/hw_ints.h"
#包括"driverlib/sysctl.h"
#包括"driverlib/gpio.h"
#包括"driverlib/interrupt.h"
#包括"driverlib/pin_map.h"
#包括"driverlib/rom.h"
#包括"driverlib/rom_map.h"
#包括"driverlib/pwm.h"
#include "driverlib/flash.h"
#include "utils/swupdate.h"
#include "utils/ustdlib.h"
#include "utils/uartstdio.h"
uint32_t g_ui32SysClock;
/**
* main.c
*/
int main (空)
{
//设置微控制器的频率
g_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);
//启用外设端口 f (激活端口 F)
// SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
SysCtlPeripheralEnable (SYSCTL_Periph_GPILL);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOM);
SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOR);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIO);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOT);
//启用外设端口 K (激活端口 K)
// SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
//启用 PWM0外设
SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);
//将引脚 PK5初始化为输出引脚
GPIOPinTypeGPIOOutput (GPIO_PORTK_BASE、GPIO_PIN_5);
//
//设置引脚 PF5的上拉功能
GPIOPadConfigSet (GPIO_PORTK_BASE、GPIO_PIN_5、GPIO_strength_8mA、GPIO_PIN_TYPE_STD);
//将输出写入引脚 PK5
GPIOPinWrite (GPIO_PORTK_BASE、GPIO_PIN_5、GPIO_PIN_5);
//将 PK5的默认输出设置为零
GPIOPinWrite (GPIO_PORTK_BASE、GPIO_PIN_5、0);
//将引脚 PK5功能类型设置为 PWM
//
GPIOPinTypePWM (GPIO_PORTK_BASE、GPIO_PIN_5);
//
//将引脚 PK5配置为 PWM7引脚信号
GPIOPinConfigure (GPIO_PK5_M0PWM7);
//
//
//等待 PWM0模块准备就绪。
while (! SysCtlPeripheralReady (SYSCTL_Periph_PWM0)
{
}
SysCtlPWMClockSet (SYSCTL_PWMDIV_1);
//将 PWM 发生器配置为可立即更新的递减计数模式
//添加到参数中。
//
PWMGenConfigure (PWM0_BASE、PWM_GEN_3、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
//
//设置周期。 频率为100KHz 时、周期= 1/100,000或10
//微秒。 对于一个120 MHz 时钟、这将转换为1200个时钟周期。
//使用该值设置周期。
//
PWMGenPeriodSet (PWM0_BASE、PWM_GEN_31200);
//
//将 PWM0的脉冲宽度设置为25%占空比。
//
PWMPulseWidthSet (PWM0_BASE、PWM_OUT_7300);
//启动发生器0中的定时器。
//
PWMGenEnable (PWM0_BASE、PWM_GEN_3);
//启用输出。
//
PWMOutputState (PWM0_BASE、(PWM_OUT_7_bit)、true);
返回0;
}