📄 main.c
字号:
/****************************************************************************
* 文 件 名:中断终止调试
* 功 能:调试如何让中断终止,然后跳出循环
* 说 明:
****************************************************************************/
//
#include "config.h"
#include <stdio.h>
//#define UART1_BPS 9600 // 定义通讯波特率
//#define UART0_BPS 115200 // 定义通讯波特率
//
uint32 count = 0;
uint32 testcount = 0;
/****************************************************************************
* 名 称:UART1_Ini()
* 功 能:初始化串口1。设置为8位数据位,1位停止位,无奇偶校验,波特率为9600
* 入口参数:无
* 出口参数:无
****************************************************************************/
/*
void UART1_Init(void)
{
uint16 Fdiv;
U1LCR = 0x83; // DLAB = 1,可设置波特率
Fdiv = (Fpclk / 16) / UART1_BPS; // 设置波特率
U1DLM = Fdiv / 256;
U1DLL = Fdiv % 256;
U1LCR = 0x03;
//U0FCR = 0x81; // 使能FIFO,并设置触发点为8个字节
//U0IER = 0x01; // 使能RDA中断
}
*/
/****************************************************************************
* 名 称:UART0_Ini()
* 功 能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为4800
* 入口参数:无
* 出口参数:无
****************************************************************************/
/*
void UART0_Init(void)
{
uint16 Fdiv;
U0LCR = 0x83; // DLAB = 1,可设置波特率
Fdiv = (Fpclk / 16) / UART0_BPS; // 设置波特率
U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
U0LCR = 0x03;
//U0FCR = 0x81; // 使能FIFO,并设置触发点为8个字节
//U0IER = 0x01; // 使能RDA中断
}
*/
/**************************************main**************************************/
int main (void)
{
void __irq IRQ_Eint3(void); // Eint3中断服务程序,响应1pps上升沿到来中断
PINSEL1 = 0x00000700; // 设置管脚连接,P0.20设置为EINT3,P0.21为PWM5
IRQEnable(); // IRQ中断使能
EXTMODE = 0x08; // 设置EINT3中断为边沿触发模式
EXTPOLAR = 0x08; // 设置EINT3中断为上升边沿有效
VICIntSelect = 0x00000000; // 设置所有中断分配为IRQ中断
VICVectCntl0 = 0x00000031; // EINT3中断级别为0
VICVectAddr0 = (int)IRQ_Eint3; // 设置中断服务程序地址
EXTINT = 0x08; // 清除EINT3中断标志
VICIntEnable = 0x00020000; // 需要修改,使能EINT3,在Bit17 // 中断使能
while (count <10)
{
NULL;
//testcount++;
if (count >10)
{
// testcount +=10;
IRQDisable();
/*
EXTINT = 0x08; // 清除EINT3中断标志
VICVectAddr = 0; // 向量中断结束
*/
//VICIntEnClr = 0x00020000; // 禁止EINT3
}
}
while (1)
{ testcount++; }
}
/*****************************EINT3中断服务程序***********************************/
void __irq IRQ_Eint3(void)
{
count++;
if (count > 10)
{
VICIntEnClr = 0x00020000; // 清除EINT3
//IRQDisable();
// VICIntEnClr = 0x00000140; // 清除UART0和PWM中断
}
EXTINT = 0x08; // 清除EINT3中断标志
VICVectAddr = 0; // 向量中断结束
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -