共3条
1/1 1 跳转至页
S3C4510B S3C4510B如何初始化才能进中断(附程序)

问
新手多有不解,请多帮忙.
#include "s3c4510b.h"
void InitUART(int Port,int Baudrate);
int Main()
{
InitUART(0,0x500); //19200bps 50MHz 0=COM1;1=COM2
for(;;){
}
return(0);
}
void __irq IRQ_UART0() //仿周立功的写法 S3C4510B是否相同
{
unsigned char i;
if ((USTAT0&0x20)==0x20)
{
i=URXBUF0;
UTXBUF0=i;
}
}
void InitUART(int Port,int Baudrate)
{
if(Port==0)
{ULCON0=0x03;
UCON0=0x05;
UBRDIV0=Baudrate;
}
if(Port==1)
{ULCON1=0x03;
UCON1=0x05;
UBRDIV1=Baudrate;
}
INTMOD=0;
INTMSK=0x001fffdf;
........ //后面还得加啥,才能进中断程序IRQ_UART0()
........
}
/////////////////////////s3c4510b.h
#define IOPMOD (*(volatile unsigned *)0x03FF5000) //IO port mode register
#define IOPCON (*(volatile unsigned *)0x03FF5004) //IO port control register
#define IOPDATA (*(volatile unsigned *)0x03FF5008) //IO port data register
#define ULCON0 (*(volatile unsigned *)0x03FFD000) //UART channel0 line control register
#define UCON0 (*(volatile unsigned *)0x03FFD004) //UART channel0 control register
#define USTAT0 (*(volatile unsigned *)0x03FFD008) //UART channel0 status register
#define UTXBUF0 (*(volatile unsigned *)0x03FFD00c) //UART channel0 transimit holding register
#define URXBUF0 (*(volatile unsigned *)0x03FFD010) //UART channel0 recieve buffer register
#define UBRDIV0 (*(volatile unsigned *)0x03FFD014) //Baud rate divisor register0
#define ULCON1 (*(volatile unsigned *)0x03FFE000) //UART channel1 line control register
#define UCON1 (*(volatile unsigned *)0x03FFE004) //UART channel1 control register
#define USTAT1 (*(volatile unsigned *)0x03FFE008) //UART channel1 status register
#define UTXBUF1 (*(volatile unsigned *)0x03FFE00c) //UART channel1 transimit holding register
#define URXBUF1 (*(volatile unsigned *)0x03FFE010) //UART channel1 recieve buffer register
#define UBRDIV1 (*(volatile unsigned *)0x03FFE014) //Baud rate divisor register1
#define INTMOD (*(volatile unsigned *)0x03FF4000) //INTERAPUT MODE register
#define INTPND (*(volatile unsigned *)0x03FF4004) //INTERAPUT PAND register
#define INTMSK (*(volatile unsigned *)0x03FF4008) //
#define INTOFFSET (*(volatile unsigned *)0x03FF4024) //
#define INTOSET_FIO (*(volatile unsigned *)0x03FF4030) //
#define INTOSET_IRQ (*(volatile unsigned *)0x03FF4034) //
#define INTPRI0 (*(volatile unsigned *)0x03FF400C) //
#define INTPRI1 (*(volatile unsigned *)0x03FF4010) //
#define INTPRI2 (*(volatile unsigned *)0x03FF4014) //
#define INTPRI3 (*(volatile unsigned *)0x03FF4018) //
#define INTPRI4 (*(volatile unsigned *)0x03FF401C) //
#define INTPRI5 (*(volatile unsigned *)0x03FF4020) //
答 1: 没人能帮一下吗?刚学ARM, 好象已经问得很清楚了. 我该如何设置才能进中断运行.
#include "s3c4510b.h"
void InitUART(int Port,int Baudrate);
int Main()
{
InitUART(0,0x500); //19200bps 50MHz 0=COM1;1=COM2
for(;;){
}
return(0);
}
void __irq IRQ_UART0() //仿周立功的写法 S3C4510B是否相同
{
unsigned char i;
if ((USTAT0&0x20)==0x20)
{
i=URXBUF0;
UTXBUF0=i;
}
}
void InitUART(int Port,int Baudrate)
{
if(Port==0)
{ULCON0=0x03;
UCON0=0x05;
UBRDIV0=Baudrate;
}
if(Port==1)
{ULCON1=0x03;
UCON1=0x05;
UBRDIV1=Baudrate;
}
INTMOD=0;
INTMSK=0x001fffdf;
........ //后面还得加啥,才能进中断程序IRQ_UART0()
........
}
/////////////////////////s3c4510b.h
#define IOPMOD (*(volatile unsigned *)0x03FF5000) //IO port mode register
#define IOPCON (*(volatile unsigned *)0x03FF5004) //IO port control register
#define IOPDATA (*(volatile unsigned *)0x03FF5008) //IO port data register
#define ULCON0 (*(volatile unsigned *)0x03FFD000) //UART channel0 line control register
#define UCON0 (*(volatile unsigned *)0x03FFD004) //UART channel0 control register
#define USTAT0 (*(volatile unsigned *)0x03FFD008) //UART channel0 status register
#define UTXBUF0 (*(volatile unsigned *)0x03FFD00c) //UART channel0 transimit holding register
#define URXBUF0 (*(volatile unsigned *)0x03FFD010) //UART channel0 recieve buffer register
#define UBRDIV0 (*(volatile unsigned *)0x03FFD014) //Baud rate divisor register0
#define ULCON1 (*(volatile unsigned *)0x03FFE000) //UART channel1 line control register
#define UCON1 (*(volatile unsigned *)0x03FFE004) //UART channel1 control register
#define USTAT1 (*(volatile unsigned *)0x03FFE008) //UART channel1 status register
#define UTXBUF1 (*(volatile unsigned *)0x03FFE00c) //UART channel1 transimit holding register
#define URXBUF1 (*(volatile unsigned *)0x03FFE010) //UART channel1 recieve buffer register
#define UBRDIV1 (*(volatile unsigned *)0x03FFE014) //Baud rate divisor register1
#define INTMOD (*(volatile unsigned *)0x03FF4000) //INTERAPUT MODE register
#define INTPND (*(volatile unsigned *)0x03FF4004) //INTERAPUT PAND register
#define INTMSK (*(volatile unsigned *)0x03FF4008) //
#define INTOFFSET (*(volatile unsigned *)0x03FF4024) //
#define INTOSET_FIO (*(volatile unsigned *)0x03FF4030) //
#define INTOSET_IRQ (*(volatile unsigned *)0x03FF4034) //
#define INTPRI0 (*(volatile unsigned *)0x03FF400C) //
#define INTPRI1 (*(volatile unsigned *)0x03FF4010) //
#define INTPRI2 (*(volatile unsigned *)0x03FF4014) //
#define INTPRI3 (*(volatile unsigned *)0x03FF4018) //
#define INTPRI4 (*(volatile unsigned *)0x03FF401C) //
#define INTPRI5 (*(volatile unsigned *)0x03FF4020) //
答 1: 没人能帮一下吗?刚学ARM, 好象已经问得很清楚了. 我该如何设置才能进中断运行.
共3条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
【OZONE】使用方法总结被打赏20分 | |
【S32K314】芯片启动流程分析被打赏20分 | |
【LP-MSPM0L1306】适配 RT-Thread Nano被打赏20分 | |
今天的咸鱼也是曾经鱼跃龙门的天纵之才,中流击水,浪遏飞舟,粪土当年万户侯,数风流人物,还看今朝,被打赏5分 | |
分享一种检测按键状态的方法被打赏20分 | |
周末总结一下,STM32C0系列的开发经验被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下定时器配置被打赏20分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下PWM配置被打赏20分 | |
【Cortex-M】Systick Timer使用被打赏10分 | |
分享汽车防盗系统的组成与分类(一)被打赏5分 |