在线时间0 小时
UID359560
注册时间2012-5-18
NXP金币0
该用户从未签到
新手上路

- 积分
- 7
- 最后登录
- 1970-1-1
|
我用8366的两个外部中断采集数据,但是始终没有采集到
我也不太清楚问题出在哪? 菜鸟一枚,没办法 。现在贴出代码。望大神指导一二 。
#include
#include
#include "IO_Map.h"
//-----------函数声明-----------------//
<span style="font-size: large;"><span style="font-family: 隶书;">
void IRQA_Interrupt(void);
void IRQB_Interrupt(void);
void pllInitialization(void);
void GPIO_Init(void);
void Interrupt_Init(void);
void PWM_Init(void);
unsigned int val0=6750,val1;
unsigned char Image_Data[ROW][COLUMN];
unsigned char Point_C, VSYN_C=0, flag, m = 0,n=0,ready,count,row=0;
/***************************************************
** 函数名称: PLL_Init
** 功能描述: 时钟初始化函数
** 说明:
****************************************************/
void pllInitialization(void)
{
setReg(PLLCR, 0x81); //使能PLL
setReg16(PLLDB,315); //设置时钟预分频
while(!getRegBit(PLLSR, LCK0)){} //等待PLL配置完成
setReg(PLLCR, 0x82); //设置时钟源后分频
}
/**************************************************
** 函数名称: IRQ
** 功能描述: 中断初始化函数
** 说明:
****************************************************/
void Interrupt_Init(void)
{
asm(bfset #0x300,SR);
setRegBitGroup(INTC_IPR2,IRQA_IPL,3); //行中断优先级为2
setRegBit(INTC_ICTL,IRQA_EDG); //行中断口下降沿触发
setRegBitGroup(INTC_IPR2,IRQB_IPL,3); //场中断优先级为2
setRegBit(INTC_ICTL,IRQB_EDG); //场中断下降沿触发
}
/**************************************************
** 函数名称: GPIO
** 功能描述: 普通IO口初始化函数
** 说明:
****************************************************/
void GPIO_Init(void)
{
GPIO_F_PER=0x0000; //配置GPIO_F低8位为通用I/O口
GPIO_F_DDR=0x0000; //设置GPIO_F低8位为输入模式
GPIO_F_PUR=0xffff;
}
/**************************************************
** 函数名称: PWMA
** 功能描述: 舵机电机PWM初始化函数
** 说明:
****************************************************/
void PWM_Init(void)
{
setReg16(PWMA_PMICCR, 0); //配置内部校准控制器
setReg16(PWMA_PMCTL, 0); //配置PWM控制寄存器
setReg16(PWMA_PMFCTL, 5); //配置错误控制寄存器
setReg16(PWMA_PMDISMAP1, 0); //配置失效映射寄存器
setReg16(PWMA_PMDISMAP2, 0);
setReg16(PWMA_PMOUT, 0); //关闭输出
setReg16(PWMA_PMCCR, 0x0100); //配置通道控制寄存器,PWMA1占空比为零
setReg16(PWMA_PMCFG, 0x0e); //使用中心对齐,独立PWM模式
setReg16(PWMA_PWMVAL1,250); //设置PWMA0的占空比为20%
setReg16(PWMA_PWMCM, 563); //装载计数器模数寄存器10KHz
setReg16Bits(PWMA_PMCTL, 0xC3); //配置PWM控制寄存器,自动重装载
setReg16(PWMA_PMOUT, 0x8000); //使能输出
//设置舵机工作方式
setReg16(PWMB_PMICCR, 0); //配置内部校准控制器
setReg16(PWMB_PMCTL, 0); //配置PWM控制寄存器
setReg16(PWMB_PMFCTL, 5); //配置错误控制寄存器
setReg16(PWMB_PMDISMAP1, 0); //配置失效映射寄存器
setReg16(PWMB_PMDISMAP2, 0);
setReg16(PWMB_PMOUT, 0); //关闭输出
setReg16(PWMB_PMCCR,0); //配置通道控制寄存器
setReg16(PWMB_PMCFG, 0x0e); //使用中心对齐,独立PWM模式
setReg16(PWMB_PWMVAL0,6750); //设置PWMB0的高电平时间为1.5ms
setReg16(PWMB_PWMCM, 32000); //装载计数器模数寄存器
setReg16Bits(PWMB_PMCTL, 0xC3); //配置PWM控制寄存器,自动重装载
setReg16(PWMB_PMOUT, 0x8000); //使能输出
}
//---------------------中断定义---------------------
#pragma interrupt alignsp
/**************************************************
** 函数名称: 中断处理函数
** 功能描述: 行中断处理函数
** 输 入: 无
** 输 出: 无
** 说明:
***************************************************/
void IRQB_Interrupt(void)
{
unsigned char i;
int x;
count++;
if((row>47)||(flag
|
|