*** error 65: access violation at 0x400280A4 : no 'write' permission............
程序如下:
#include<lm3sxxx.h>
/*********************************************************************************************************
LM3S328系列PWM例程:递增递减计数产生PWM方波,在Zero处触发中断,在中断里逐周期改变PWM周期。
*********************************************************************************************************/
/*
#include "hw_memmap.h"
#include "hw_types.h"
#include "hw_ints.h"
#include "interrupt.h"
#include "sysctl.h"
#include "gpio.h"
#include "pwm.h"
*/
#define PH0_PWM2 GPIO_PIN_1
#define PH1_PWM3 GPIO_PIN_6
int main (void)
{
SysCtlClockSet(SYSCTL_SYSDIV_1 |SYSCTL_USE_OSC |SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB|SYSCTL_PERIPH_GPIOC); /* 使能PWM2和PWM3输出所在GPIO */
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM); /* 使能PWM模块 */
SysCtlPWMClockSet(SYSCTL_PWMDIV_1); /*  

WM时钟配置:不分频 */
GPIOPinTypePWM(GPIO_PORTB_BASE,GPIO_PIN_1); /*  

B1和PC6配置为PWM功能 */
GPIOPinTypePWM(GPIO_PORTC_BASE,GPIO_PIN_6);
PWMGenConfigure(PWM_BASE, PWM_GEN_1, /* 配置PWM发生器1:加减计数 */
PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); /*立即更新*/
PWMGenPeriodSet(PWM_BASE, PWM_GEN_1, 60000); /* 设置PWM发生器1的周期 */
PWMPulseWidthSet(PWM_BASE, PWM_OUT_2,30000); /* 设置PWM2输出的脉冲宽度 */
PWMPulseWidthSet(PWM_BASE, PWM_OUT_3,30000); /* 设置PWM3输出的脉冲宽度 */
PWMSyncUpdate(PWM_BASE,PWM_GEN_1_BIT); //同步等待
PWMOutputState(PWM_BASE, PWM_OUT_2_BIT | PWM_OUT_3_BIT, true); /* 读取模块的使输出控制寄存器,并设置或清除请求的比特*/
PWMGenEnable(PWM_BASE, PWM_GEN_1); /* 使能PWM发生器1,开始产生 */
/*  

WM方波 */
PWMGenIntTrigEnable(PWM_BASE, PWM_GEN_1,PWM_INT_CNT_ZERO); /*使能中断*/
PWMIntEnable(PWM_BASE, PWM_INT_GEN_1); /* 使能PWM发生器1中断 */
IntEnable(INT_PWM1); /* 使能PWM1中断 */
IntMasterEnable(); /* 使能总中断 */
for (;;)
{
}
}
// PWM发生器1中断服务函数
void  

WM_Generator_1_ISR (void)
{
const unsigned long ulTab[10] =
{
3000, 9000, 15000, 21000, 27000,
33000, 39000, 45000, 51000, 57000
};
static unsigned long n = 0;
PWMGenIntClear(PWM_BASE, PWM_GEN_1, PWM_INT_CNT_ZERO);
PWMPulseWidthSet(PWM_BASE, PWM_OUT_2, ulTab[n]); /* 设置PWM2输出的周期 */
PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, ulTab[9-n]); /* 设置PWM3输出的周期 */
n++;
if ( n >= 10 )
{
n = 0;
}
}