共2条
1/1 1 跳转至页
2214 2214自学求助!灯点亮了!但中断不知道如何下手,例子也看不懂
问
!
我还不会用LPC2000 ARM的中断,我写的程序进不了中断,
关于VICIntEnable,VICIntSelect
以下是KEIL的例子,那里有VICIntEnable,VICIntSelect的详细说明?
在周立功的用户指南里只是简单的提一下,这个寄存器是干什么用的,但并没有说明如下的VICIntSelect = 0x00008000;//这个0x00008000是依据什么来定的?又如VICIntEnable = 0x00008000;//当是EXTINT0、或串口时又如何设置?
void initFiq(void)
{
IODIR1 = 0x00FF0000; //Set the LED pins as outputs
PINSEL0 = 0x20000000; //Enable the EXTINT1 interrupt
VICIntSelect = 0x00008000; //Enable a Vic Channel as FIQ
VICIntEnable = 0x00008000; 答 1: 这些寄存器中每一位控制的中断源在该小节中有说明0x00008000表示第16位为1,即中断源为“外部中断1”(参看《基础教程》表5.63)。 答 2: 多谢指点,我看了你们的课件后,写了以下程序,
#include "uart.h"
//=============================================
#define BaudRate 115200
#define Fosc 14318180
#define VPB 1
#define MSEL 4
#define PSEL 2
#define cclk MSEL*Fosc/VPB
#define Uart0_value cclk/16/BaudRate
//=============================================
void uart0_isr(void)__irq
{
unsigned char U0IIR_value,test;
test = U0LSR;
U0IIR_value = U0IIR;
if(U0IIR_value&0x01)//为1时,没有中断挂起。
{
}
else
{
switch(U0IIR_value&0x07)
{
case 0x06: break;
case 0x04: //接收数据可用或FIFO到达触发点。
test = U0RBR;
U0THR = test;
break;
case 0x0C: break;//字符超时
case 0x02: break;//THER空
default: break;
}
}
}
void DefaultIRQ(void)__irq
{
}
void init_uart(void)
{
PINSEL0 = 0x01e00005; /* Enable RxD0 and TxD0 */
U0LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
U0DLL = Uart0_value; /* 115200Baud Rate */
U0LCR = 0x03; /* DLAB = 0 */
U0IER = 0x03; /* Enable UART0 intrrupt */
VICIntSelect = 0x00000000; /*Enable a Vic Channel as IRQ */
VICIntEnable = 1<<6; /* Set Default interrupt vector */
VICDefVectAddr = (unsigned long)DefaultIRQ; //非向量中断入口地址。
VICVectCntl0 = 0x26; //设置优先级0为第6中断源,并打开中断源6的中断允许。
VICVectAddr0 = (unsigned long)uart0_isr;/*把uart_isr函数的入口地址赋给优先为0的中断源的中断入口地址。*/
IODIR0 = 0x01e00000;
IOSET0 = 0x01e00000;
}
/*这是我写的串口测试程序,为什么PC只收到最开始的数据呢?到第二个数据就收不到了。我给他发了N个数据!*/ 答 3: 建议参看我们提供的串口中间件程序,里面有串口和中断的使用方法 答 4: 多谢zlgARM我只有你们的课件、用户手册、DATASHEET。书就没有了!十分感谢你的帮忙! 答 5: 我是easy ARM 2100 的用户,也有相同的迷惑配套的用户手册的确不详细,对寄存器的每一位代表的含义就是不太了解!
请问《基础教程》是书还是电子档? 答 6: 基础教程是书 答 7: 《基础教程》是用户手册,还是在市面上买的?《基础教程》是用户手册,还是在市面上买的?书名全称吗? 答 8: re;《ARM嵌入式系统基础教程》,北京航空航天大学出版社出版.
我还不会用LPC2000 ARM的中断,我写的程序进不了中断,
关于VICIntEnable,VICIntSelect
以下是KEIL的例子,那里有VICIntEnable,VICIntSelect的详细说明?
在周立功的用户指南里只是简单的提一下,这个寄存器是干什么用的,但并没有说明如下的VICIntSelect = 0x00008000;//这个0x00008000是依据什么来定的?又如VICIntEnable = 0x00008000;//当是EXTINT0、或串口时又如何设置?
void initFiq(void)
{
IODIR1 = 0x00FF0000; //Set the LED pins as outputs
PINSEL0 = 0x20000000; //Enable the EXTINT1 interrupt
VICIntSelect = 0x00008000; //Enable a Vic Channel as FIQ
VICIntEnable = 0x00008000; 答 1: 这些寄存器中每一位控制的中断源在该小节中有说明0x00008000表示第16位为1,即中断源为“外部中断1”(参看《基础教程》表5.63)。 答 2: 多谢指点,我看了你们的课件后,写了以下程序,
#include "uart.h"
//=============================================
#define BaudRate 115200
#define Fosc 14318180
#define VPB 1
#define MSEL 4
#define PSEL 2
#define cclk MSEL*Fosc/VPB
#define Uart0_value cclk/16/BaudRate
//=============================================
void uart0_isr(void)__irq
{
unsigned char U0IIR_value,test;
test = U0LSR;
U0IIR_value = U0IIR;
if(U0IIR_value&0x01)//为1时,没有中断挂起。
{
}
else
{
switch(U0IIR_value&0x07)
{
case 0x06: break;
case 0x04: //接收数据可用或FIFO到达触发点。
test = U0RBR;
U0THR = test;
break;
case 0x0C: break;//字符超时
case 0x02: break;//THER空
default: break;
}
}
}
void DefaultIRQ(void)__irq
{
}
void init_uart(void)
{
PINSEL0 = 0x01e00005; /* Enable RxD0 and TxD0 */
U0LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
U0DLL = Uart0_value; /* 115200Baud Rate */
U0LCR = 0x03; /* DLAB = 0 */
U0IER = 0x03; /* Enable UART0 intrrupt */
VICIntSelect = 0x00000000; /*Enable a Vic Channel as IRQ */
VICIntEnable = 1<<6; /* Set Default interrupt vector */
VICDefVectAddr = (unsigned long)DefaultIRQ; //非向量中断入口地址。
VICVectCntl0 = 0x26; //设置优先级0为第6中断源,并打开中断源6的中断允许。
VICVectAddr0 = (unsigned long)uart0_isr;/*把uart_isr函数的入口地址赋给优先为0的中断源的中断入口地址。*/
IODIR0 = 0x01e00000;
IOSET0 = 0x01e00000;
}
/*这是我写的串口测试程序,为什么PC只收到最开始的数据呢?到第二个数据就收不到了。我给他发了N个数据!*/ 答 3: 建议参看我们提供的串口中间件程序,里面有串口和中断的使用方法 答 4: 多谢zlgARM我只有你们的课件、用户手册、DATASHEET。书就没有了!十分感谢你的帮忙! 答 5: 我是easy ARM 2100 的用户,也有相同的迷惑配套的用户手册的确不详细,对寄存器的每一位代表的含义就是不太了解!
请问《基础教程》是书还是电子档? 答 6: 基础教程是书 答 7: 《基础教程》是用户手册,还是在市面上买的?《基础教程》是用户手册,还是在市面上买的?书名全称吗? 答 8: re;《ARM嵌入式系统基础教程》,北京航空航天大学出版社出版.
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |