|  | 
 
| 
目的:
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  利用alt_main以及uart模块提供的api函数编写一个简单的串口发送程序
 前提:
 使用nios II 8.0版本,已经设计好相应的硬件(PTF文件).system library设置中只勾选了"Clean exit"和"Reduced device driver".此时uart将采用fd(文件描述器)和small模式的驱动.在alt_main中已经调用了alt_irq_init()和alt_sys_init().
 疑问:
 观察altera_avalon_uart_fd.h可知在调用alt_sys_init()时已经实例化了一个全局变量uart,可是在alt_main中调用uart的api函数时使用这个全局变量时编译又会出错,就算添加了extern altera_avalon_uart_dev uart这句话还是不行。只有自己在alt_main中实例化一个uart时,才能用altera_avalon_uart_write(&uart.state,str,strlen(str),~O_NONBLOCK);请问这是为什么啊? 不加这句话进行IIS调试时可以添加全局变量uart,说明已经有了这个变量,却无法使用。不理解其中原由,还是我的理解有错?请高手指点,谢谢
 
 ps:看过uart nios中文使用说明。已经把uart的api内容解释的很清楚,可是刚到应用部分就没有了,没有解决我心中的疑问。
 代码如下所示:
 #include"system.h"
 #include"alt_types.h"
 #include"sys/alt_irq.h"
 #include"sys/alt_sys_init.h"
 #include"altera_avalon_uart.h"
 #include"altera_avalon_uart_fd.h"
 #include<string.h>
 #include<fcntl.h>
 extern altera_avalon_uart_dev uart;
 int main(void) __attribute__((weak,alias("alt_main")));
 void alt_main(void)
 {
 //altera_avalon_uart_state uart;
 //uart.base=UART_BASE; //不添加这两句就是没有uart这个变量
 char *str="hello my nios ^_^";
 
 
 alt_irq_init(ALT_IRQ_BASE);
 alt_sys_init();
 while(1)
 {
 // altera_avalon_uart_write(&uart.state,str,strlen(str),~O_NONBLOCK);
 }
 }
 | 
 |