摘要: 最近在使用FreeRTOS的时候,突然发现程序在运行了几分钟之后所有的任务都不再调用了,只有几个中断能正常使用,看来是系统挂掉了,连续测试了几次想找出问题,可是这个真的有点不知所措。 我先看了下文档里的常见错误,发现和我现在有关系的也就堆栈大小的设置和中断嵌套优先级的设置了,不过我这几个任务都是比较简单的,没有太多的变量,那么现在设置的堆栈大小是够的,不然也不会运行一段时间才奔溃,应该一运行就会奔溃的。那么把问题就集中到了中断嵌套优先级里,我尝试了把configKERNEL_INTERRUPT_PRIORITY = 15/configMAX_SYSCALL_INTERRUPT_PRIO... 阅读全文
posted @ 2013-07-08 11:33 吾乐 阅读(6013) 评论(0) 推荐(0) 编辑
摘要: 最近拿到了一块万利的EK-STM32F的学习板,打算先用它来熟悉下STM32的编程环境,不过在这过程中和一个同事聊的时候觉得如果只调用STM32的库写程序,可能在芯片资源的利用上面可能就会差一点,在这么高的主频下,一些硬延时的函数对资源会造成比较大的损失,所以一般的编程方式还是有不少局限性的,所以我就觉得有必要去使用小型的嵌入式RTOS来实现系统的资源管理。 以前看过一些RTT的资料,可是感觉比较复杂,如果直接使用的话可能要花的时间比较长,虽然一直什么都做了,可是还是有点复杂的感觉,uCos吗商业使用限制比较大,虽然资源比较多,可是很多组件都是暂时用不到的。最后找到了Free RTOS,... 阅读全文
posted @ 2013-07-02 13:45 吾乐 阅读(3099) 评论(1) 推荐(2) 编辑
摘要: 在RT-Thread上完成简单的LED等显示后,我就准备把路虎板子的液晶驱动移到RTT项目里,其实很简单的,因为例子里都有代码的,我以为Copy下写个简单的显示测试下就好了,结果把我折腾了一晚还没搞定,还把液晶的芯片文档翻了N遍,测试了不少想法,才找出问题的,这个很郁闷,无良的厂家,既然把一个管脚的电平给搞错了,还让我拿到了,擦擦。 说下我遇到的问题:我把驱动移到RTT后,就写了一个简单的字符显示想测试下(直接调用函数就好了),结果发现显示的字符不对劲,根本看不出来是什么,我就开始检查程序,查显示逻辑,查时序,看是否有问题,测试这些感觉都好的。那没办法,我就找了芯片的文档,是SSD1289.. 阅读全文
posted @ 2013-06-06 21:59 吾乐 阅读(582) 评论(1) 推荐(0) 编辑
摘要: 一直深入的学习下RTOS,以前也看了段时间的uCos,简单的玩了会,可是没有项目的支持,一个人的持续学习能力真的很有限,学了不知道用来干什么是一种悲哀啊,我一直崇尚的是学有所用,在使用中深入,不然自学的永远只是一点皮毛啊。 今天把同学送我的开发板拿出来了,用的是NXP LPC1768芯片,外设功能也都齐全(开发板的特色啊),不过悲惨的是资料一点找不到了,随便到网上找了下使用的开发环境,开发手册,芯片文档和原理图,顺便下了几个例子这样就可以开始了,不过我是要用他来跑RTT的,就是RT-Thread,一个国人自己写的开源RTOS,有团队专门支持,且实用性也不错。 为什么我要学习RTOS呢?... 阅读全文
posted @ 2013-06-01 15:44 吾乐 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 在写串口程序中,我想实现接收窗口的宽度可调,这样在调试一些数据协议的时候,我就可以通过调整这个接收框的大小来使接收的数据协议正好占满一行或几行,那么我去查看和判断协议的时候就可以很清楚的分辨了。不过我用google查了不少资料愣是没找到QTextEdit能实现这功能,其他的简单实现也没发现,最后就发现了QSplitter这个可以分割窗口的类。不过发现这个类使用也不是那么简单,看了下别人写,发现不能只对一个QTextEdit来操作分裂器,至少要2个以上QTextEdit来操作,那么只能这样办了。 我在窗口设计上增加了一个QTextEdit窗口,和接收的窗口并列,并选中两个窗口,右击选择使用... 阅读全文
posted @ 2013-05-31 09:19 吾乐 阅读(3347) 评论(1) 推荐(1) 编辑
摘要: 最近编写了将串口接收到的数据保存到txt文件中,下面就说下如何保存数据了。 这里利用QFileDialog来实现保存对话框弹出操作: 1 path = QFileDialog::getSaveFileName(this, tr("Save File"),savepath,2 tr("TEXT (*.txt)"));path是返回一个该对话框获得的文件路径和文件名,利用这个参数我们就可以操作存数据了:1 QFile *savefile = new QFile(path);2 3... 阅读全文
posted @ 2013-05-30 07:29 吾乐 阅读(1503) 评论(0) 推荐(0) 编辑
摘要: 昨天发了blog之后,网友提供一种不用子类化的方式来实现左键双击,就是使用QObject提供的事件过滤器来实现对其他对象的事件进行响应。这里先安装对应对象的事件过滤器,installEventFilter(this),这样只要该对象产生事件,就会先执行本对象的eventFilter()函数,在该函数里先判断是否是我们需要处理的事件,如果是则处理返回true,如果不是则返回false,那么该事件则会传递下去,进行处理。 这里我初始化了一个: 1 ui->SendTextEdit->installEventFilter(this); 2 3 bool MainWindow::event 阅读全文
posted @ 2013-05-29 10:59 吾乐 阅读(1188) 评论(0) 推荐(0) 编辑
摘要: 在编写串口程序的时候,想法实现发送框双击发送数据,可以发现QPlainTextEdit这类既然没有DoubleClick这个信号,后来找了下相关资料,只知道QPlainTextEdit的基类是QWidget,且该类是带有MouseDoubleClickEvent这个事件的,可问题是我想直接就能在我的主程序累里使用该事件,结果试了好多的方式,看了不少的资料都没找到什么可行的方案。 那没办法,老老实实的在QPlainTextEdit类上派生一个类,并且重载了virtual void mouseDoubleClickEvent ( QMouseEvent * event )函数,在自定义了一个... 阅读全文
posted @ 2013-05-28 22:55 吾乐 阅读(1424) 评论(4) 推荐(0) 编辑
摘要: 用到的类:Qextserialbase和Win_Qextserialport,这两个类不是库里自带的,需要百度下,可以找到这两个类的源文件。 在使用的时候,我定义了一个Win_QextSerialPort类的对象myCom,要想执行myCom.open(QIODevice::ReadWrite)之前必须先执行myCom.setPortName(n)来设置串口的名字,不然会返回错误。之后就可以设置波特率一些参数,使用中发现波特率之类要在open之后才有效,如果在open之前就设置了,可能这个设置会无效,看了源码发现在设置之前会用isOpen()判断。还有个比较好用的设置就是: myCom.se. 阅读全文
posted @ 2013-05-26 19:31 吾乐 阅读(1390) 评论(0) 推荐(0) 编辑
摘要: 在单片机中编程中,代码量不是很大,也就几千行的代码量,不像那些电脑软件,没事就上万行,所以在我们这个工作里,对代码的进行版本控制的观念几乎没有,代码都是写到哪顶多做下备份也就过去了,不会像计算机软件对代码版本控制的要求那么高,也可能公司小,对这方面要求比较低吧。 以前也本来想尝试下版本控制软件的,像git之类的,可以感觉用法太麻烦,也不知道从何入手,也就3分钟热度,没搞定就放弃了,毕竟我对这个要求实在是毕竟低。最近发现了GitHub既然自带了一款带界面的版本控制软件,不用像git那样要记住各种的命令,就没事下了试用了下,发现基本的使用还是可以的,不过还是会有不少的问题,同步出错啊啥的,最... 阅读全文
posted @ 2013-05-22 21:07 吾乐 阅读(380) 评论(1) 推荐(0) 编辑