《第6章 部件工作原理与编程示例.pdf》由会员分享,可在线阅读,更多相关《第6章 部件工作原理与编程示例.pdf(75页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ARM 应用系统开发?解基于 S3C4510B 的系统?计 1 第第第第 6 章章章章 部件工作原理与编程示例部件工作原理与编程示例部件工作原理与编程示例部件工作原理与编程示例 本章?要?止杂归权附10B 的几个常用?能部?编程?象?介绍基于 止杂归权附10B 的系统的程序?计?调试?时简介 BootLoa平er 的基本原理和编程方法?通过?本章的阅读?使读者了解 止杂归权附10B 各?能部?的?作原理及基本编程方法?本章的?要内容包括?嵌入式系统应用程序?计的基本方法?止杂归权附10B 通用 存尾O 口的?作原理?编程示例?止杂归权附10B 串行通信控?器的?作原理?编程示例?止杂归权附10
2、B 中断控?器的?作原理?编程示例?止杂归权附10B 定时器的?作原理?编程示例?止杂归权附10B 当MA 控?器的?作原理?编程示例?止杂归权附10B 存存归 总线控?器的?作原理?止杂归权附10B?太网控?器的?作原理?F须as具?储器的?作原理?编程示例?BootLoa平er 简介 6.1 嵌入式系统的程序?计方法 一般说来?于一个完整的嵌入式应用系统的开发?硬?的?计?调试?作仅占整个?作量的一半?应用系统的程序?计也是嵌入式系统?计一个非常?要的方面?程序的质量直接影响整个系统?能的实?好的程序?计?克服系统硬?计的?足?高应用系统的性能?之?会使整个应用系统无法?常?作?本章?应用
3、的角度出发?止杂归权附10B 的各个?能模块?编程?象?介绍一些实用的程序段?读者既?按自?的需要修改?也?吸收?计思想和方法?便?计出?合于自?特定应用系统的实用程序?时?由于 ARM 体系结构的一?性?管?的应用程序段是针?特定硬?开发的?编程思路?合于?他类型的 ARM 微处理器?于基于 PC?的程序开发?嵌入式系统的程序?计?有?自身的特点?程序?计的方法也会因系统或因人而?但?程序?计?是有?共?的特点及规律的?在编写嵌入式系统应用程序时?采?如?几个?骤?1?明确所要解?的?题?据?题的要求?将?成若?个相?独立的部?并合理?计?的总体结构?2?合理配置系统资源?基于 8?或 16
4、?微控?器的系统相?较?基于 32?微控?器的系统资源要丰富得多?但合理的资源配置?最大ARM 应用系统开发?解基于 S3C4510B 的系统?计 2 限度的发挥系统的硬?潜能?高系统的性能?于一个特定的系统来说?系统资源?如 Flash?EEPROM?SDRAM?中断控?等?都是有限的?应合理配置系统资源?3?程序的?计?调试?优化?据?的总体结构编写程序?时采用各种调试手段?找出程序的各种语法和逻辑错误?最?应使各?能程序模块化?缩短?码长度?节省?储空间并减少程序执行时间?外?由于嵌入式系统一般都应用在?境?较恶劣的场合?易?各种?扰?而影响到系统的?靠性?因?应用程序的抗?扰技术也是必
5、?考虑的?也是嵌入式系统应用程序?于?他应用程序的一个?要特点?6.2 部?作原理?编程示例 6.2.1 通用 I/O 口工作原理与编程示例 S3C4510B?供了 18 个?编程的通用 I/O 端口?用户?将每个端口配置?输入模式?输出模式或特殊?能模式?由片内的特殊?能寄?器 IOPMOD 和 IOPCON控?端口 0端口 7 的?作模式仅由 IOPMOD 寄?器控?但通过?置 IOPCON 寄?器?端口 8端口 11?用作外部中断?求 INTREQ0INTREQ3 的输入?端口 12?端口 13?用作外部 DMA?求 XDREQ0?XDREQ1 的输入?端口 14?端口 15?作?外部
6、DMA?求的应答信?XDACK0?XDACK1?端口 16?作?定时器 0 的溢出 TOUT0?端口 17?作?定时器 1 的溢出 TOUT1?I/O 端口的?能模块如图 6.2.1 所示?ARM 应用系统开发?解基于 S3C4510B 的系统?计 3 图 际尽2尽1 通用 存尾O 口的?能模块 控?I/O 口的特殊?能寄?器一共有 3 个?IOPMOD?IOPCON 和 IOPDATA?简要?述如?存/O 口模式寄?器?存OPMOD?:I/O 口模式寄?器 IOPMOD 用于配置 P17P0?寄?器 偏移地址 操作 功能描述 复位值 IOPMOD 0 x5000 读/写 I/O 口模式寄?器
7、 0 x0000,0000 0P0 口的 存/O 模式位 0=输入 1=输出 1P1 口的 存/O 模式位 0=输入 1=输出 2P2 口的 存/O 模式位 0=输入 1=输出 317P3P17 口的 存/O 模式位 0=输入 1=输出 存/O 口控制寄?器?存OPCON?:I/O 口控?寄?器 IOPCON 用于配置端口 P8P17 的特殊?能?些端口用作特殊?能?如外部中断?求?外部中断?求应答?外部 DMA?求或应答?定时器溢出?时?作模式由 IOPCON 寄?器控?而?由 IOPMOD 寄?器?于特殊?能输入端口?S3C4510B?供了一个滤波器用于检测特殊?能信?的输入?如果输入信?
8、电?宽度等于?个系统时钟周期?信?被认?是?如外部中断?求或外部 DMA?求等特殊?能信?寄?器 偏移地址 操作 功能描述 复位值 IOPCON 0 x5004 读/写 I/O 口控?寄?器 0 x0000,0000 4:0控制端口 8 的外部中断请求信号 0?x存RQ0?输入 4端口 8 用作外部中断?求信?0 0=禁?1=使能 ARM 应用系统开发?解基于 S3C4510B 的系统?计 4 3 0=?电?有效 1=高电?有效 2 0=滤波器关 1=滤波器开 1?0 00=电?检测 01=?升沿检测 10=?降沿检测 11=?升?降沿均检测 9:5控制端口 9 的外部中断请求信号 1?x存R
9、Q1?输入 使用方法?端口 8?14:10控制端口 10 的外部中断请求信号 2?x存RQ2?输入 使用方法?端口 8?19:15控制端口 11 的外部中断请求信号 3?x存RQ3?输入 使用方法?端口 8?22:20控制端口 12 的外部 DMA 请求信号 0?DRQ0?输入 22端口 12 用作外部 DMA?求信?0?nXDREQ0?0=禁?1=使能 21 0=滤波器关 1=滤波器开 20 0=?电?有效 1=高电?有效 25:23控制端口 13 的外部 DMA 请求信号 1?DRQ1?输入 25端口 13 用作外部 DMA?求信?1?nXDREQ1?0=禁?1=使能 24 0=滤波器关
10、1=滤波器开 23 0=?电?有效 1=高电?有效 27:26控制端口 14 的外部 DMA 应答信号 0?DAK0?输出 27端口 14 用作外部 DMA 信?0?nXDACK0?0=禁?1=使能 26 0=?电?有效 1=高电?有效 29:28控制端口 15 的外部 DMA 应答信号 1?DAK1?输出 29端口 15 用作外部 DMA 信?1?nXDACK1?0=禁?1=使能 28 0=?电?有效 1=高电?有效 30控制端口 16 作?定时器 0 溢出信号?TOEN0?0=禁?1=使能 31控制端口 17 作?定时器 1 溢出信号?TOEN1?0=禁?1=使能 存/O 口数据寄?器?存
11、OPDATA?:?配置?输入模式时?读?I/O 口数据寄?器 IOPDATA 的每一?应输入状态?配置?输出模式时?写每一?应输出状态?17?0?应于 18 个 I/O 引脚 P17P0?寄?器 偏移地址 操作 功能描述 复位值 IOPDATA 0 x5008 读/写 I/O 口数据寄?器?定?ARM 应用系统开发?解基于 S3C4510B 的系统?计 5 17?0?应 I/O 口 P17P0 的读/写值?I/O 口数据寄?器的值?映?应引脚的信?电?简述了 S3C4510B 的通用 I/O 口的基本?作原理?更?的内容?参考止杂归权附10B 的用户手?作?本章的第一个例子?将?较?的?述建立
12、?目?编写程序的过程?时?参考第?章关于 ADS 集成编译调试?境的使用方法?打开 CodeWarrior for ARM Developer Suite?或 ARM Project Manager?建一个?目?并?建一个文?Init.s?体内容如?*?Institute of Automation?Chinese Academy of Sciences?File Name?Init.s?Description?Author?JuGuang.Lee?Date?*IMPORT Main AREA Init?CODE?READONLY ENTRY LDR R0,=0 x3FF0000 LDR R1
13、,=0 xE7FFFF80?配置 SYSCFG,片内 4K Cache,4K SRAM STR R1,R0 LDR SP,=0 x3FE1000?SP 指向 4K SRAM 的?地址?堆?向?生成 BL Main B .END?段?码完成的?能?配置 SYSCFG 特殊?能寄?器?将 S3C4510B 片内的 8K 一体化的 SRAM 配置?4K Cache?4K SRAM?并将用户堆?置在片内的 SRAM 中?4K SRAM 的地址?0 x3FE,0000(0 x3FE,1000?1)?由于 S3C4510B 的堆?由高地址向?地址生成?将 SP 初始化?0 x3FE,1000?完成?述?作
14、?程序跳转到 Main 函数执行?保?Init.s?并添?到?建的?目?建一个文?main.c?体内容如?/*Institute of Automation,Chinese Academy of Sciences *File Name?main.c*Description?*Author?JuGuang.Lee ARM 应用系统开发?解基于 S3C4510B 的系统?计 6*Date?*/#define IOPMOD (*(volatile unsigned*)0 x03FF5000)/IO port mode register#define IOPDATA (*(volatile unsig
15、ned*)0 x03FF5008)/IO port data register void Delay(unsigned int);int Main()unsigned long LED;IOPMOD=0 xFFFFFFFF;/将 IO 口置?输出模式 IOPDATA=0 x01;for(;)LED=IOPDATA;LED=(LED1);IOPDATA=LED;Delay(10);if(!(IOPDATA&0 x0F)IOPDATA=0 x01;return(0);void Delay(unsigned int x)unsigned int i,j,k;for(i=0;i=x;i+)for(j=
16、0;j0 xff;j+)for(k=0;k0 xff;k+);保?main.c?并添?到?建的?目?时?目?行编译链接?生成?执行的映象文?执行的映象文?要用于程序的调试?一般在系统的 SDRAM 中?行?并?写入 Flash?因?目文?在链接时?注意程序的入口点应?系统中 SDRAM 的实?配置地址相?应?链接器默认程序的入口地址?0 x8000?值应?据实?的SDRAM 映射地址?行修改?在编译链接?目文?时?将链接器程序的入口地址?0 x00权0主0000?打开 AX当 当ebu其其er?或 ARM 当ebu其其er for W典n平ows?的命?行窗口?执行 obey命?位obey 归
17、光八memmap尽txt 系统中 SDRAM 被映射到 0 x00权0主0000?0 x01权0主0000-1?0 x00权0主0000处装入生成的?执行的映象文?并将 PC 指针寄?器修改?0 x00权0主0000?就?单?调试或?行生成的?执行的映象文?ARM 应用系统开发?解基于 S3C4510B 的系统?计 7?程序的?行效果?接在 P0P3 口的 LED 显示器?流被点亮?6.2.2 串行通讯工作原理与编程示例 串行通?是微计算机之间一种常见的?距离通?手段?因使用方便?编程简单而广泛使用?几乎所有的微控?器?PC 都?供串行通?接口?S3C4510B 的 UART 单元?供两个独立
18、的?串行 I/O 口?Asynchronous Serial I/O?SIO?每个通?口均?作在中断模式或 DMA 模式?也即 UART 能产生内部中断?求或 DMA?求在 CPU 和串行 I/O 口之间传?数据?S3C4510B 的 UART 单元特性包括?波特率?编程?支?红外发?接收?12 个停?5?6?7 或 8 个数据?奇偶校验 每一个?串行通?口都?有独立的波特率发生器?发?器?接收器和控?单元?波特率发生器?由片内系统时钟 MCLK 驱动?或由外部时钟 UCLK?Pin64?驱动?发?器和接收器都有独立的数据缓?寄?器和数据移?器?待发?的数据首?传?到发?缓?寄?器?然?拷贝到
19、发?移?器并通过发?数据引脚 UATXDn 发?出去?接收数据首?接收数据引脚 UARXDn 移入移?器?接收到一个?节时就拷贝到接收缓?寄?器?SIO 的控?单元通过?控?作模式的选择?状态和中断产生?使用 UART 的发?中断?能时?应在初始化 UART 之前?写一个?节数据到UART 的发?缓?寄?器?发?缓?寄?器空时就?产生 UART 的发?中断?图 6.2.2?串行口的?能模块?ARM 应用系统开发?解基于 S3C4510B 的系统?计 8 图 际尽2尽2 串行口?能模块?表 6-2-1?UART 特殊?能寄?器?述 表 6-2-1 UART 特殊功能寄?器 寄?器 偏移地址 操作
20、 功能描述 复位值 ULCON0 0 xD000 读/写 UART0 行控?寄?器 0 x00 ULCON1 0 xE000 读/写 UART1 行控?寄?器 0 x00 UCON0 0 xD004 读/写 UART0 控?寄?器 0 x00 UCON1 0 xE004 读/写 UART1 控?寄?器 0 x00 USTAT0 0 xD008 读 UART 0 状态寄?器 0 xC0 USTAT1 0 xE008 读 UART1 状态寄?器 0 xC0 UTXBUF0 0 xD00C 写 UART0 发?保?寄?器?定?UTXBUF1 0 xE00C 写 UART1 发?保?寄?器?定?URX
21、BUF0 0 xD010 读 UART0 接收缓?寄?器?定?URXBUF1 0 xE010 读 UART1 接收缓?寄?器?定?UBRDIV0 0 xD014 读/写 UART0 波特率除数因子寄?器 0 x00 UBRDIV1 0 xE014 读/写 UART1 波特率除数因子寄?器 0 x00 BRDCNT0 0 xD018 写 UART0 波特率计数寄?器 0 x00 BRDCNT1 0 xE018 写 UART1 波特率计数寄?器 0 x00 BRDCLK0 0 xD01C 写 UART0 波特率时钟监视器 0 x00 BRDCLK1 0 xE01C 写 UART1 波特率时钟监视器
22、 0 x00 UART 行控制寄?器?UART Line Control Registers,ULCON0、ULCON1?:ARM 应用系统开发?解基于 S3C4510B 的系统?计 9 寄?器 偏移地址 操作 功能描述 复位值 ULCON0 0 xD000 读/写 UART0 行控?寄?器 0 x0000?0000 ULCON1 0 xE000 读/写 UART1 行控?寄?器 0 x0000?0000 表 6-2-2?UART 行控?寄?器?述 表 6-2-2 UART 行控制寄?器描述 位 位?功能描述 1:0 每?长?两?指示发?或接收的每?的数据?未00末=5?未01末=6?未10末
23、=7?未11末=8?2 停?数?指示每?数据的停?数?未0末=每?一个停?未1末=每?两个停?5:3 校验模式?指示在数据的发?接收过程中如何生成校验并?行检测?未0XX末=无校验?未100末=奇校验?未101末=偶校验?未100末=奇校验?未110末=校验强?尾检测?1?未111末=校验强?尾检测?0?6 串行时钟选择?用于选择时钟源?0=内部时钟?MCLK?1=外部时钟?UCLK?7 红外模式选择 S3C4510B 的 UART 模块支?红外?IR?发?接收?要使能红外模式?需?置 ULCON7?1?否则选择?常 UART 模式?1:0每?长?WL?00=5?01=6?10=7?11=8?
24、2?尾停止位?STB?0=每?一个停?1=每?两个停?5:3校验模式?PMD?0 xx=无校验 100=奇校验 101=偶校验 110=校验强?尾检测?1 111=校验强?尾检测?0 6串行时钟选择?SC?0=内部时钟?MCLK?1=外部时钟?UCLK?7红外模式选择?存R?ARM 应用系统开发?解基于 S3C4510B 的系统?计 10 0=?常?作模式 1=红外发?模式 UART 控制寄?器?UART Control Registers,UCON0、UCON1?:寄?器 偏移地址 操作 功能描述 复位值 UCON0 0 xD004 读/写 UART0 控?寄?器 0 x0000?0000
25、UCON1 0 xE004 读/写 UART1 控?寄?器 0 x0000?0000 表 6-2-3?UART 控?寄?器?述 表 6-2-3 UART 控制寄?器描述 位 位?功能描述 1:0 接收模式选择?两?的值?定?UART 接收缓?寄?器中读?数据时的?前?能?未00末=禁?Rx 模式?未01末=产生中断?求?未10末=产生 GDMA 通道 0?求?未11末=产生 GDMA 通道 1?求?2 接收状态中断使能?定?在数据的接收过程中发生?常?如发生间断?错误?校验错误或 Overrun 错误?时是否让 UART产生中断?求?未0末=?产生接收状态中断?求?未1末=产生接收状态中断?求
26、?4:3 发?模式选择?两?的值?定?写数据到 UART 发?缓?寄?器中时的?前?能?未00末=禁?Tx 模式?未01末=产生中断?求?未10末=产生 GDMA 通道 0?求?未11末=产生 GDMA 通道 1?求?5 数据?备准备好?选择是否产生数据?备准备好?DSR?信?输出?0=?产生 DSR 输出?1=产生 DSR 输出?nUADSR 引脚?6 发?间隔?选择是否发?间隔信?0=?发?间隔信?1=发?间隔信?7 回?模式选择?选择 UART 是否?入回?模式?在回?模式?发?的数据的输出置?高电?发?缓?寄?器 UTXBUF在内部直接?接到接收缓?寄?器 URXBUF?回?模式仅用于
27、测试目的?在?常?作模式?应?未0末?ARM 应用系统开发?解基于 S3C4510B 的系统?计 11 1:0接收模式选择?RxM?00=禁?01=产生中断?求 10=产生 GDMA 通道 0?求 11=产生 GDMA 通道 1?求 2接收状态中断使能?RxS存?0=?产生接收状态中断 1=产生接收状态中断 4:3发?模式选择?TxM?00=禁?01=产生中断?求 10=产生 GDMA 通道 0?求 11=产生 GDMA 通道 1?求 5数据设备准备好?DSR?0=?产生 DSR 输出?nUADSR 引脚?1=产生 DSR 输出?nUADSR 引脚?6发?间隔?SBK?0=发?间隔信?1=?发
28、?间隔信?7回环使能?LPB?0=?常?作模式 1=使能回?模式?仅用于测试?UART 状态寄?器?UART Status Registers,USTAT0、USTAT1?:寄?器 偏移地址 操作 功能描述 复位值 USTAT0 0 xD008 读 UART0 状态寄?器 0 x0000?00C0 USTAT1 0 xE008 读 UART1 状态寄?器 0 x0000?00C0 表 6-2-4?UART 状态寄?器?述 表 6-2-4 UART 状态寄?器描述 位 位?功能描述 0 Overrun 错误 在接收串行数据的?作中?发生 Overrun 错误时?自动置?未1末?在?前接收到的数据
29、?读出?而被?收到的数据所覆盖时发生 Overrun 错误?如果接收状态中断使能?UCON2?未1末?则?Overrun错误发生时产生接收状态中断?任何时候读?UART 状态寄?器 USTAT?都会自动清零?1 校验错误 在接收串行数据的?作中?发生校验错误时?自动置?未1末?如果接收状态中断使能?UCON2?未1末?则?校验ARM 应用系统开发?解基于 S3C4510B 的系统?计 12错误发生时产生接收状态中断?任何时候读?UART 状态寄?器 USTAT?都会自动清零?2?错误 在接收串行数据的?作中?发生数据?错误时?自动置?未1末?检测到停?未0末时发生?错误?如果接收状态中断使能?
30、UCON2?未1末?则?错误发生时产生接收状态中断?任何时候读?UART 状态寄?器 USTAT?都会自动清零?3 间隔中断?接收到间隔信?时?自动置?未1末?如果接收状态中断使能?UCON2?未1末?则?接收到间隔信?时产生接收状态中断?任何时候读?UART 状态寄?器 USTAT?都会自动清零?4 数据?端准备好?DTR?指示数据?端准备好引脚?nUADTR?的?前信?电?未1末时?数据?端准备好引脚?nUADTR?电?未0末时?数据?端准备好引脚?nUADTR?高电?5 接收数据准备好?接收缓?寄?器 URXBUF?串行口接收到一个有效数据时?自动置?未1末?然?就?URXBUF中读?接
31、收到的有效数据?未0末时表示?接收到一个有效的数据?未1末时?据?前 UART 接收模式?UCON1:0的?置?产生中断或 DMA?求?6 发?缓?寄?器空?发?缓?寄?器UTXBUF?空时?自动置?未1末?时?向 UTXBUF 写入?一个要发?的数据?未0末时?表示 UTXBUF 中的数据?全部拷贝到发?移?寄?器中?时?能向 UTXBUF 中写入?的发?数据?未1末 时?据?前 SIO 发?模式?UCON4:3的?置?产生中断或 DMA?求?7 发?完成?TC?发?缓?寄?器 UTXBUF?空且发?移?寄?器也?空时?自动置?未1末?用于指示?是否?在?时禁用发?能模块?0Overrun
32、错误?OV?0=在接收过程中?产生 Overrun 错误 1=Overrun 错误?如果 UCON2置?1?则会产生接收状态中断?注?接收到的数据?被读?而?接收的数据覆盖了原有的数据时?就会产生 Overrun 错误?ARM 应用系统开发?解基于 S3C4510B 的系统?计 13 1校验错误?PE?0=在接收过程中无校验错误 1=校验错误?如果 UCON2置?1?则会产生接收状态中断?2?错误?FE?0=在接收过程中无?错误 1=?错误?如果 UCON2置?1?则会产生接收状态中断?3间隔信号检测?BKD?0=?收到间隔信?1=收到间隔信?如果 UCON2置?1?则会产生接收状态中断?4数
33、据终端准备好?DTR?0=DTR 引脚?nUADTR?置高 1=DTR 引脚?nUADTR?置?5接收数据准备好?RDR?0=接收缓?寄?器中无有效数据 1=接收缓?寄?器中有有效数据?若?置 UCON1?0?则产生中断或 DMA?求?6发?缓冲寄?器空?TBE?0=发?保?寄?器中有有效数据 1=发?保?寄?器中无数据?若?置 UCON4?3?则产生中断或 DMA?求?7发?结束?TC?0=?在发?数据 1=发?数据结束 UART 发?缓冲寄?器?UART Transmit Buffer Registers,UTXBUF0、UTXBUF1?:此AR正 发?缓?寄?器 此正XB此F0?此正XB
34、此F1?放待发?的 8?数据?把待发?的数据写入?寄?器时?此AR正 的状态寄?器 此止正A正际公自动清零?寄?器 偏移地址 操作 功能描述 复位值 UTXBUF0 0 xD00C 写 UART0 发?缓?寄?器?定?UTXBUF1 0 xE00C 写 UART1 发?缓?寄?器?定?表 6-2-5?UART 发?缓?寄?器?述 表 6-2-5 UART 发?缓冲寄?器描述 位 位?功能描述 7:0 发?数据?放要发?的数据?向?寄?器写入数据时?状态寄?器中的发?缓?寄?器空?USTAT6清未0末?防 UTXBUF 中的数据被覆盖?任何时候向 UTXBUF 中写入?的数据?发?缓?寄?器空?
35、USTAT6都会被清未0末?ARM 应用系统开发?解基于 S3C4510B 的系统?计 14 7:0UART 要发?的数据 UART 接收缓冲寄?器?UART Receive Buffer Register,URXBUF0、URXBUF1?:此AR正 接收缓?寄?器 此RXB此F0?此RXB此F1?放接收到的 8?串行数据?此AR正接收完一个数据?此AR正的状态寄?器此止正A正附公置?1?读?此RXB此F时?此止正A正附公自动清零?寄?器 偏移地址 操作 功能描述 复位值 URXBUF0 0 xD010 读 UART0 接收缓?寄?器?定?URXBUF1 0 xE010 读 UART1 接收缓
36、?寄?器?定?表 6-2-6?UART 接收缓?寄?器?述 表 6-2-6 UART 接收缓冲寄?器描述 位 位?功能描述 7:0 接收数据?放接收到的数据?接收完一?数据时?UART 状态寄?器中的接收数据准备好?USTAT5被置?未1末?防?URXBUF 中的读出的数据无效?任何时候读?URXBUF?接收数据准备好?USTAT5都会自动清未0末?7:0UART 接收到的数据 UART 波特率除数因子寄?器?UART Baud Rate Divisor Registers,UBRD存V0、UBRD存V1?:此AR正 波特率除数因子寄?器 此BR当存步0?此BR当存步1 的值?定发?接收的波特
37、率?寄?器 偏移地址 操作 功能描述 复位值 UBRDIV0 0 xD014 读/写 UART0 波特率除数因子寄?器 0 x0000?0000 UBRDIV1 0 xE014 读/写 UART1 波特率除数因子寄?器 0 x0000?0000 3:0 波特率除数因子值?CNT1?xxx0=除 1 xxx1=除 16 15:4时间常数值?CNT0?CNT0 的计算?式如?CNT0=MCLK/?32BR?1 MCLK?系统的?作频率?BR?通?的波特率?UART 波特率示例:ARM 应用系统开发?解基于 S3C4510B 的系统?计 15 UART 的波特率发生器的输入时钟?系统时钟?也?外部引
38、入时钟信?若选用系统时钟?波特率发生器的输入时钟?系统时钟?50MHz 时?则最大的波特率时钟输出?MCLK2/16?=1.5625MHz?中 MCLK2?系统时钟 MCLK除?2?UCLK 引脚?UART0?UART1 的外部时钟输入引脚?UART 波特率发生器的输入时钟 MCLK2 或 UCLK?由寄?器 UCCON6选择?图?UART 波特率发生器的结构图和?型的波特率?关于 此AR正?作原理和使用方法的更?内容?参考 止杂归权附10B 用户手?的示例完成通过串行口 此AR正0 发?数据的?能?接收?能的编程?之类似?示例的通?协?1先200 波特?8?数据?1?停?无校验?打开 Cod
39、eWarrior for ARM Developer Suite?或 ARM Project Manager?建一个?目?并?建一个文?Init.s?体内容?第一个例子相?保?Init.s?并添?到?建的?目?建一个文?main.c?体内容如?/*Institute of Automation,Chinese Academy of Sciences*File Name?main.c*Description?*Author?JuGuang.Lee*Date?ARM 应用系统开发?解基于 S3C4510B 的系统?计 16*/#define ULCON0 (*(volatile unsigned*
40、)0 x03FFD000)/UART channel0 line control register#define UCON0 (*(volatile unsigned*)0 x03FFD004)/UART channel0 control register#define USTAT0 (*(volatile unsigned*)0 x03FFD008)/UART channel0 status register#define UTXBUF0 (*(volatile unsigned*)0 x03FFD00c)/UART channel0 transimit holding register#d
41、efine URXBUF0 (*(volatile unsigned*)0 x03FFD010)/UART channel0 recieve buffer register#define UBRDIV0 (*(volatile unsigned*)0 x03FFD014)/Baud rate divisor register0#define ULCON1 (*(volatile unsigned*)0 x03FFE000)/UART channel1 line control register#define UCON1 (*(volatile unsigned*)0 x03FFE004)/UA
42、RT channel1 control register#define USTAT1 (*(volatile unsigned*)0 x03FFE008)/UART channel1 status register#define UTXBUF1 (*(volatile unsigned*)0 x03FFE00c)/UART channel1 transimit holding register#define URXBUF1 (*(volatile unsigned*)0 x03FFE010)/UART channel1 recieve buffer register#define UBRDIV
43、1 (*(volatile unsigned*)0 x03FFE014)/Baud rate divisor register1 void InitUART(int Port,int Baudrate);void PrintUART(int Port,char*s);int Main()InitUART(0,0 x500);/19200bps CPU?作频率 50MHz 0=COM1;1=COM2 for(;)PrintUART(0,Communcation Testting!rn);return(0);void PrintUART(int Port,char*s)if(Port=0)for(
44、;*s!=0;s+)for(;(!(USTAT0&0 x40););UTXBUF0=*s;if(Port=1)ARM 应用系统开发?解基于 S3C4510B 的系统?计 17for(;*s!=0;s+)for(;(!(USTAT1&0 x40););UTXBUF1=*s;void InitUART(int Port,int Baudrate)if(Port=0)ULCON0=0 x03;UCON0=0 x09;UBRDIV0=Baudrate;if(Port=1)ULCON1=0 x03;UCON1=0 x09;UBRDIV1=Baudrate;保?main.c?并添?到?建的?目?时?目?行
45、编译链接?生成?执行的映象文?执行的映象文?行时?会?停的向 UART0 发?符串本Communcation Testting!札?6.2.3 中断控制器工作原理与编程示例 中断是计算机的一种基本?作方式?几乎所有的 CPU 都支?中断?S3C4510B的支?多达 21 个中断源?中断?求?由内部?能模块和外部引脚信?产生?ARM7TDMI?识?两种类型的中断?常中断?求?Normal Interrupt Request?IRQ?和快?中断?求?Fast Interrupt Request?FIQ?因?S3C4510B的所有中断都?类?IRQ 或 FIQ?S3C4510B 的中断控?器?每一个
46、中断源都有一个中断悬?Interrupt Pending Bit?S3C4510B 用如?四个寄?器控?中断的产生和?中断?行处理?中断优?级寄?器?Interrupt Priority Register?每一个中断源的索引?写入一个预定?的中断优?级寄?器?获得特定的优?级?中断优?级预定?020?中断模式寄?器?Interrupt Mode Register?每一个中断源定?中断模式?是 IRQ?是 FIQ?中断悬?寄?器?Interrupt Pending Register?指示中断?求处于悬?状态?处理?如果中断悬?被置?则中断悬?状态会一直保?直到 CPU 通过写未1末到中断悬?寄?
47、器的相应?清除?注意是写未1末清除?而?是写未0末?ARM 应用系统开发?解基于 S3C4510B 的系统?计 18?中断悬?被置?时?无论中断屏蔽寄?器是否?未0末?中断服?程序都开始执行?在中断服?程序中?必?通过向中断悬?寄?器的相应?写未1末来清除中断悬?志?避免由于?一个中断悬?中断服?程序的?复执行?中断屏蔽寄?器?Interrupt Mask Register?如果中断屏蔽?未1末 则?应的中断会被禁?如果中断屏蔽?未0末?则?应的中断?求能?常响应?但如果全局中断屏蔽?21?未1末?则所有的中断都会被禁?有中断?求产生时?应的中断悬?会被置?未1末?在全局中断屏蔽?和?应的中断
48、屏蔽?未0末时?中断?求就会被响应?S3C4510B 的中断源?存nterrupt Sources?S3C4510B?支?21 个中断源?如表 6-2-7 所示?表 6-2-7 S3C4510B 的中断源 索引号 中断源 20 IIC 总线中断 19?太网控?器 MAC 接收中断 18?太网控?器 MAC 发?中断 17?太网控?器 BDMA 接收中断 16?太网控?器 BDMA 发?中断 15 HDLC 通道 B 接收中断 14 HDLC 通道 B 发?中断 13 HDLC 通道 A 接收中断 12 HDLC 通道 A 发?中断 11 定时器 1 中断 10 定时器 0 中断 9 GDMA
49、通道 1 中断 8 GDMA 通道 0 中断 7 UART1 接收?错误中断 6 UART1 发?中断 5 UART0 接收?错误中断 4 UART0 发?中断 3 外部中断 3 2 外部中断 2 1 外部中断 1 0 外部中断 0 中断控制器的特殊功能寄?器?存nterrupt Controller Special Registers?中断模式寄?器?存nterrupt Mode Register?中断模式寄?器 INTMOD 通过每一?的?置?定每一种中断是按快?中断?FIQ?是按?常中断?IRQ?响应?寄?器 偏移地址 操作 功能描述 复位值 INTMOD 0 x4000 读/写 中断模
50、式寄?器 0 x0000,0000 ARM 应用系统开发?解基于 S3C4510B 的系统?计 19 20:0中断模式位 INTMOD 的 21 个?应于表 6-2-7 中所?述的 21 个中断源?中断模式?被置?未1末时?ARM7TDMI?按 FIQ 方式处理?应的中断?否则按 IRQ 方式处理中断?21 个中断源映射如?20 IIC 中断 19?太网控?器 MAC 接收中断 18?太网控?器 MAC 发?中断 17?太网控?器 BDMA 接收中断 16?太网控?器 BDMA 发?中断 15 HDLC 通道 B 接收中断 14 HDLC 通道 B 发?中断 13 HDLC 通道 A 接收中断