uart发送程序

### UART发送程序解析与知识点详解 #### 标题与描述概览 标题“uart发送程序”及描述“在nius2上调试成功的一个uart发送程序”揭示了此代码段为一个在NIUS2开发板上运行成功的UART(通用异步收发传输器)发送程序。该程序利用Altera的硬件资源实现数据的串行通信,具体涉及到的数据结构和函数调用均围绕着UART的读写操作、状态检测以及中断处理。 #### 核心知识点分析 1. **头文件导入**: - `#include "system.h"`:系统头文件,通常包含基本的系统定义和常量。 - `#include "altera_avalon_pio_regs.h"`:Altera Avalon外设接口寄存器头文件,用于访问PIO(可编程输入输出)设备的寄存器。 - `#include "alt_types.h"`:提供Altera特定的数据类型,如`alt_u8`、`alt_u16`等,用于硬件编程。 - `#include "altera_avalon_uart_regs.h"`:Avalon UART寄存器头文件,用于访问UART设备的寄存器。 - `#include "altera_avalon_uart.h"`:Avalon UART功能头文件,封装了UART的基本操作。 2. **宏定义**: - `#define SIZE0 sizeof(dat0)`:定义`SIZE0`为`dat0`数组的大小,便于后续代码中动态使用。 - `#define SIZE1 sizeof(dat1)`:同上,但针对`dat1`数组。 3. **静态数据数组**: - `static alt_u8 dat0[] = "uarttestsuccessed";`:定义了一个名为`dat0`的`alt_u8`类型数组,用于存储字符串“uarttestsuccessed”,用于发送测试。 - `static alt_u8 dat1[] = "www.52eda.com";`:定义了另一个名为`dat1`的`alt_u8`类型数组,用于存储网址字符串,同样用于发送测试。 4. **变量声明**: - `static alt_u8 recv[3] = {0};`:接收缓冲区,用于保存接收到的UART数据,长度为3。 - `alt_u16 uart0state;`:UART的状态寄存器值,用于检查UART的当前状态。 - `alt_u16 uart0control;`:UART的控制寄存器值,用于设置或修改UART的操作模式。 - `alt_u8 num;`:计数器,用于追踪接收到的数据数量。 5. **函数声明与实现**: - `HANDLE_UART_0_interrupts()`:中断服务例程,处理来自UART0的中断。检查UART的状态,如果接收准备好则读取数据,如果传输准备好则执行相应操作。 - `alt_main()`:主函数,初始化UART,设置中断,并进入无限循环,依次发送`dat0`和`dat1`中的数据,等待传输完成,并延时。 6. **寄存器操作**: - 使用`IORD_ALTERA_AVALON_UART_STATUS`和`IOWR_ALTERA_AVALON_UART_STATUS`进行状态寄存器的读写。 - 使用`IOWR_ALTERA_AVALON_UART_CONTROL`写入控制寄存器。 - 使用`IOWR_ALTERA_AVALON_UART_TXDATA`发送数据至UART。 7. **中断注册**: - `alt_irq_register(UART_IRQ, (void*)0, HANDLE_UART_0_interrupts);`:注册UART中断处理函数。 #### 结论 此程序展示了如何在NIUS2开发板上通过Altera的Avalon UART接口实现UART数据的发送,涉及了寄存器操作、中断处理、数据发送等多个方面,是理解并掌握UART通信机制及其在嵌入式系统中应用的重要示例。通过深入分析代码逻辑与硬件交互细节,可以更好地理解和掌握UART通信技术在实际项目中的应用方法。































#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "altera_avalon_uart_regs.h"
#include "altera_avalon_uart.h"
#define SIZE0 sizeof(dat0)
#define SIZE1 sizeof(dat1)
static alt_u8 dat0[] = "uart test successed ";//{'w',0x89,0x91};
static alt_u8 dat1[] = "www.52eda.com";//{'w',0x89,0x91};
static alt_u8 recv[3] = {0};
alt_u16 uart0state;
alt_u16 uart0control;
alt_u8 num;
/*
* This is a freestanding application, so we want to use alt_main
* as the entry point. However, if the debugger is run on this
* application, it will try to set a breakpoint at main, which
* the application does not contain. The below line creates an
* alias so the debugger is able to set a breakpoint at main,
* yet the application retains alt_main as it's entry point.
*/
int main (void) __attribute__ ((weak, alias ("alt_main")));
/*
* Use alt_main as entry point for this free-standing application
*/
void HANDLE_UART_0_interrupts(void * context,alt_u32 id)

- boyou6112017-12-27我犯二了,我想找的是STM32平台的,百毒推荐了这个,没看就下载了,亏死了。

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 网络信息安全B作业题和考试复习题.doc
- 互联网背景下如何提高图书编校质量.docx
- tcpip协议与网络管理标准教程.doc
- 大数据背景下高校思想政治教育过程融入路径探究.docx
- 云南基层干部教育培训信息化建设应用研究教育文档.doc
- 团购网站Groupon及中国电子商务发展分析.doc
- 外贸建站-营销型网站建设.doc
- 斩波电路Matlab仿真电力电子技术课程设计.doc
- 互联网+大连海参养殖新模式探究.docx
- python-游戏数据搜索引擎-基于Python开发的游戏信息检索系统-整合多平台游戏数据-提供快速搜索与详细展示功能-支持用户自定义筛选与收藏-适用于游戏爱好者与开发者查询游戏资.zip
- 人工智能双面观.docx
- 基于欧氏距离的K均方聚类算法研究与应用.docx
- 对安徽江苏山东网络电视台的比较分析.docx
- JavaEEJsp图书系统实用技术文档.doc
- 网络信息安全项目教程习题-解答.doc
- 物联网技术在现代种植业中的应用.docx


