stm32中断无电平触发的解决办法
这几天在用stm32读取FPGA中FIFO里的数据,遇到了不少的问题。其中有个自己觉得比较好玩的问题,就拿出来写写。其实这个问题也比较简单,开始我觉得没必要拿出来写,不过,想想后觉得还是写写吧,就当做是打发一下时间。
问题就是,stm32的中断没有电平触发方式。网上也看了看,有人为电平触发的中断没有什么意义,没必要用。也有人的想法相反。接下来我就不废话了,直接开始讲我遇到的这个问题以及怎么解决的吧。
说一下背景。我的任务是用stm32读取FPGA中FIFO里的数据。至于这些数据怎么来的,怎么写进FIFO里面我就不说了。这里简单看看FIFO的结构,如图一所示。当FIFO数据写到一半时(一般是非空就给信号,我这里设置的半满时给信号)给stm32信号,比如将这个引脚拉拉高(或者拉低,根据实际情况自己设置),直到stm32将数据读出后拉低。然后就让这个信号触发stm32进入中断函数中去读数据。而且我希望这要这个信号只要是低电平stm32就一直读读取时序如图二。这样就需要将中断设置成电平触发,只要低就一直重复进中断函数里读数据。那么问题来了,stm32不能将中断设置成电平触发的方式。 rd_clock:时钟信号 wr_full:半满信号
rd_en: 使能信号 tx_data: 数据
图一

图二
怎么解决呢?我的做法是这样的。如图三所示: 在箭头1处,用while循环,里面的判断条件是读取的中断输入引脚(我设置为GPIOE_Pin4)的值,如果这个引脚的值是1的话,就继续读数据。如果值为0的话就退出while循环,清中断(箭头2处),再退出中断函数。这段代码的其他地方是自己用软件的方式模拟的读数据的时钟信号。这个和FIFO的读取方式有关,这里不具体说,以后有时间了可以再写写FIFO的读取问题。 
图三
好了,这样就解决了我的问题。下面可以开始验证了。如图四所示,是为验证编写的主函数,很简单,就不说了。按照预期,应该出现的现象是:程序下载后,stm32的LED闪烁,代表程序程序运行正常。然后让FPGA给里面的FIFO写数据,半满后给出中断信号。串口调试助手可以看到,当半满信号给出被拉高后,串口调试助手中显示出事先写入FIFO中的数据,此时LED停止闪烁。半满信号拉低后,无数据显示,LED灯开始闪烁。下面,我就把程序下进去观察一下。
图四
从图五里可以可以看到,读出了数据,而且就是事先写入FIFO里的数据。另外,LED灯在串口调试助手printf出数据时,停止闪烁。数据printf完后,有开始闪。和预期一样
图五
好了。内容就这些了。第一次写,写的不怎么样,内容也比较简单,大家看完了,想吐槽就吐槽吧^0^~.... 最后,必须要说的是,实验室学长才是这次任务的主角,主要的工作是他做的,我只是给他打下手(∩_∩)...
stm32中断无电平触发的解决办法的更多相关文章
- es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式
es6 Object.assign 目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...
- cmd命令行中无pip命令的解决办法
cmd命令行中无pip命令的解决办法 只需简单的两步即可,按顺序执行以下命令(在cmd中): python -m ensurepip python -m pip install --upgrade p ...
- logstash file输入,无输出原因与解决办法
1.现象 很多同学在用logstash input 为file的时候,经常会出现如下问题:配置文件无误,logstash有时一直停留在等待输入的界面 2.解释 logstash作为日志分析的管道,在实 ...
- Android开发之ADT中无Annotation Processin的解决办法
使用ButterKnife的时候,进入ADT中设置的时候发现在Java Compiler展开后无Annotation Processin 解决办法: 安装插件:Juno - http://downlo ...
- Toolbar 和 CollapsingToolbarLayout一起使用时menu item无点击反应解决办法
昨天一直在琢磨为什么Toolbar和CollapsingToolbarLayout一起使用时menu item无点击放应的原因,后来在stackoverflow上一条回答,说可能是Toolbar的背景 ...
- jquery中动态新增的元素节点无法触发事件解决办法
在使用jquery中动态新增的元素节点时会发现添加的事件是无法触发的,我们下面就为各位来详细的介绍此问题的解决办法. 比如做一个ajax读取留言列表的时候,每条留言后面有个回复按钮,class为“re ...
- IAR升级之后,编译stm32官方工程报错的解决办法
IAR升级之后,打开stm32官方例程,编译时提示如下错误: Error[Pe147]: declaration is incompatible with "__nounwind __int ...
- 换晶振导致stm32串口数据飞码的解决办法
一般来说,stm32f107都是用标配的晶振,比如8MHz. 但是,如果用别的晶振,比如13.56M的晶振,那串口接收还正常吗? 根据试验结果,很可能会飞码.比如说用串口助手发送的是0x35,但是在串 ...
- win10笔记本电脑连wifi显示“无internet,安全”解决办法
吹一波, 不出意外的话,这应该是网上最全最详细的解决办法......毕竟妹子的电脑遇到了问题,咱一定要给她解决啊. 问题描述:连上了WiFi,显示“无Internet,安全”.但实际上她的电脑是有网的 ...
随机推荐
- 携带cookie进行数据请求
前端进行数据请求有:普通的ajax(json)请求,jsop跨域请求,cors跨域请求,fetch请求...PC端这些请求方式中,普通的ajax(json)请求和jsop跨域请求是默认携带cookie ...
- JavaScript基础17——js的Date对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【Bootstrap】1.初识Bootstrap
作为Web前端开发框架,Bootstrap为大多数标准的UI设计常见提供了用户友好.扩浏览器的解决方案. 1.下载Bootstrap 打开官方网址 http://getbootstrap.com/ 进 ...
- N900快捷键
Ctrl + C 复制文本 Ctrl + V 粘贴文本 Ctrl + X 剪切文本 Ctrl + A 全部选择 Ctrl + O 打开 Ctrl + N 新建 Ctrl + S 保存 Ctrl + Z ...
- 发布App,赢iPad mini + 美金100$ - Autodesk Exchange 应用程序发布竞赛
开发牛人们,送你个iPad mini要不要,Autodesk Exchange应用程序发布竞赛开始了. 摘要版: 在2014年9月30日午夜前提交到Autodesk Exchange 应用程序商店上, ...
- JSOM 对User的操作
一.操作当前用户 //Load current user info function LoadCurUser() { var curUser; curUser = curWeb.get_current ...
- 115个Java面试题和答案——终极列表(下)
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...
- TextView显示颜色高亮的问题
TextView textView = (TextView) findViewById( R.id.tv ); String text = "<font color=\"#d ...
- iOS 获取emoji表情和拦截emoji表情
1 2 //将数字转为 #define EMOJI_CODE_TO_SYMBOL(x) ((((0x808080F0 | (x & 0x3F000) >> 4) | (x &a ...
- App Transport Security has blocked a cleartext
错误描述: App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecu ...