求助,关于arm7定时器中断的问题,进入不了中断服务程序

求助,关于arm7定时器中断的问题,进入不了中断服务程序,第1张

arm在发生中断的时候会固定跳到0x18处执行一段code,所以你需要在陵稿0x18处放一段你自己的code,而我们通常的做法就是在这个放一个code使其执行0x38处的中断handler,这个handler是我们自己定义的,一般在这个handler里面尺稿孝会有b code_ISR之类的语句,跳转到c语言中的 code_ISR函数,然后在这个函数里面再判断是那种类型敬唯的irq,比如说是timer,那么就跳转到Timer1_ISR这个函数里面。就算是执行啦。

呵呵!那个你看里面的tmr的代码就知道了!比较镇者简单的!肯定是不能用_irq的!我给你贴段代码出来!你参考哈!

void UartInit(CPU_INT32U PortNum,CPU_INT32U baudrate )

{

CPU_INT32U Fdiv

if ( PortNum == 0 )

{

#if UART0_EN>0

PINSEL0 = 0x00000050 /* RxD0 和 TxD0 */

U0LCR = 0x83 /* 8 位数据位, 无校验位, 1 位停止位 */

Fdiv = ( Fpclk / 16 ) / baudrate /*波特率设置 */

U0DLM = Fdiv / 256

U0DLL = Fdiv % 256

U0LCR = 0x03 /* DLAB = 0 */

U0FCR = 0x07 /* 使能和复位 TX 和 RX 的FIFO */备前

VICIntSelect &= ~(1 <<VIC_UART0) /* 配置uart0中断为御滚薯 IRQ 中断源 */

VICVectAddr6 = (CPU_INT32U)Uart0_ISR_Handler /* 设置中断地址*/

VICIntEnable = (1 <<VIC_UART0) /* 使能uart0中断源 */

U0IER = IER_RBR | IER_THRE | IER_RLS /* 使能 UART0 的中断 */

下面是中断服务程序ISR

void Uart0_ISR_Handler(void)

{

#if UART0_EN>0

#if OS_CRITICAL_METHOD == 3 /* 分配存储空间给CPU状态寄存器 */

OS_CPU_SR cpu_sr = 0

#endif

CPU_INT08U IIRValue, LSRValue

CPU_INT08U Dummy = Dummy

只截了一部分哈!主要是后面是我们公司一个项目里面的了!呵呵!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12464310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存