| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 2021-07-16 -> 正文阅读 |
|
[C++知识库]2021-07-16 |
(1) Next选择器件,再Finish。我的开发板上是Cyclone II系列EP2C8。 2、打开SOPC Builder,配置NIOS硬件 CPU配置经济型的就OK了 添加on-chip menory ROM 改名为progam,RAM改名为data 再添加PIO,4位OUTPUT改名为led,但这样Quartus II RUN时会产生错误 在错误上面点击右键help,上面提示: > Project too complex: hierarchy path is too long recursive logic迭代逻辑太多,为什么呢?其实很简单,因为PIO改名为led和工程名led一样,Quartus II无法辨别。所以以后大家注意这一点,工程名一定不要和SOPC PIO的名字相同。 这里我们就改名为led_pio,再进入CPU中,选择Reset Vector和Exception Vection分别为progam和data, 然后是地址分配和终端分配,先点击Auto-Assign Base Address,再点击Auto-Assign IRQs 最后Generate,等一会儿…… 3、在Quartus II中建立原理图文件BDF,双击原理图的空白处,选择project里面我们建立SOPC例化图标: 点击OK,放置SOPC在BDF中,选中SOPC点击右键选择,会自动生成引脚,在更改你想要命名的引脚名即可。 这里我们命名为clk,reset和led[3…0] 。 4、锁定引脚,和FPGA的IO对应,建立TCL脚本文件,按自己FPGA开发板的实际情况,我的开发板TCl为 set_global_assignment -name RESERVE_ALL_UNUSED_PINS “AS INPUT TRI-STATED” #未用的IO设为输入三态 set_location_assignment PIN_6 -to led set_location_assignment PIN_5 -to led set_location_assignment PIN_3 -to led 点击RUN,最后Start compilation 5、下载到FPGA中,点击progammer 到这里我们的硬件设计就OK了 6、打开NIOS II IDE软件,新建一个NIOS II C/C++ Application Select Project Template: Blank Project Name : led SOPC Builder System PTF File选择我们建立的SOPC文件 NEXT,Finish…… 7、在led上点击右键,NEW一个C语言文件 Source File输入C语言文件名,一定要加".c" ,Finish…… 在NIOS 文件led上点击右键,选择System Library Properties Program memory选择progam后OK! 8、下面我们在led.c里面写软件 #include “system.h” void delay(void) int alt_main(void)
} 在NIOS工程led上面点击右键选择Build Project,稍等片刻…… 同样在NIOS工程led点击右键Run AS–NIOS II Hardware,流水灯跑起来了 (2) USART的初始化代码,在我们第一章里,已经由STM32CubeMX自动产生出来了,因为我们当时在配置引脚的时候将PA9/PA10配置成了UART1,自动产生出的UART初始化代码请参考main.c里面的: MX_USART1_UART_Init函数: /**
/* USER CODE BEGIN USART1_Init 0 */ /* USER CODE END USART1_Init 0 */ /* USER CODE BEGIN USART1_Init 1 */ /* USER CODE END USART1_Init 1 / /* USER CODE END USART1_Init 2 */ } /**
/* USER CODE BEGIN USART1_Init 0 */ /* USER CODE END USART1_Init 0 */ /* USER CODE BEGIN USART1_Init 1 */ /* USER CODE END USART1_Init 1 / /* USER CODE END USART1_Init 2 */ } 然后我们稍微封装一下串口的输出接口: void uart1_write(void* pdata, unsigned int len) void uart1_write_byte(uint8_t value) 而非gcc编译器,如ARMCC编译器则需要重新实现fputc。 #ifdef GNUC
在main中添加测试代码 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/5 20:18:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |