NIOSII下简单的串口实验

2 篇文章 0 订阅

本来是写个最简单的程序 就一个串口通信的程序
刚刚开始是完全不出字符
一单步发现 那个状态位卡那里了
于是果断的把NIOS的data cache禁掉了
然后把等待状态改变的语句粗暴的去掉了
然后出来的字符了
结果写完了之后是这个样子本来是写个最简单的程序 就一个串口通信的程序
刚刚开始是完全不出字符
一单步发现 那个状态位卡那里了
于是果断的把NIOS的data cache禁掉了
然后把等待状态改变的语句粗暴的去掉了
然后出来的字符了
结果写完了之后是这个样子

图片
说白了就是一堆乱码 
然后反复看了代码 除了注册中断的函数更新了 其余的代码和文献上完全一样啊
然后各种尝试 不出来 
 然后这两天写计划 这事就放下了

然后晚上走之前,忽然想到,有数据出来但是是乱码,应该就是协议参数不匹配的问题。
但是看了波特率 停止位 校验位 都没有错啊
最后在看了一眼设置波特率的函数
set_baudrate(115200);
11520 没有错
再看看实现:
UART->DIVISOR.WORD=(unsigned int)(ALT_CPU_FREQ/baudrate+0.5);
也没有问题
然后在头文件里面看了看这个常量ALT_CPU_FREQ
上面写着#define ALT_CPU_FREQ 50000000
但是我依稀记得给的外部时钟是100000000HZ啊
最后我发现 是我Qsys构建的时候 时钟修改过一次,里面的参数赋值是50MHz,但是在使用pll的时候,给的是100MHz。
然后吧这个参数改成100MHz,重新生成BSP

一切成功了图片
呵呵
这突然的一下心血来潮 解决了个大问题 否则不知道要调试多长时间
人脑很奇妙啊
一个疑问是,外部时钟给得和设定的完全不一致,其他的部分是怎么正常工作的!因为除了串口,其他对SDRAM和pio以及LCD操作居然都是正常的。

今天很开心,完。

 更多相关内容,请关注我的个人微信公众号:hearwithlisten

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值