这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 无线数据采集---传感网

共40条 3/4 1 2 3 4 跳转至
高工
2013-06-23 22:09:03     打赏
21楼
那个按键得多按一会。不行就再按一下,我碰到过,没太在意

专家
2013-06-26 18:53:05     打赏
22楼
在这层楼描述几个问题吧。我没有直接去测试utenux操作系统,而是从sample的那十几个例程入手先熟悉硬件。在这个过程中有几个LCD的问题。

1.画圆的程序,与X轴交点不闭合。如下图

检查函数LCDD_DrawCircle();是标准的Bresenham算法。

与群里的“编程浪子”军爷交流过,他将ST的程序跑在这块板子上仍旧出现这种问题。

2.画矩形函数,只有横边没有竖边。如下图

上图是我自己写的程序画出来的矩形,程序如下:

void LCD_Rectangle( uint16_t stX, uint16_t stY, uint16_t endX, uint16_t endY, uint32_t dwColor)
{
//    uint32_t i,j;
LCD_Line(stX,stY,stX,endY,dwColor);
LCD_Line(endX,stY,endX,endY,dwColor);
LCD_Line(stX,stY,endX,stY,dwColor);
LCD_Line(stX,endY,endX,endY,dwColor);
}
上边函数调用的画线程序也是我写的,开始以为库文件中画线函数有问题,所以就自己写了一个。该函数能画水平线,和斜率为1或-1的斜线,但是竖直线画不出来。程序如下:

void LCD_Line( uint16_t stX, uint16_t stY, uint16_t endX, uint16_t endY, uint32_t dwColor)
{//只能画水平线,斜率为1或-1的斜线,竖直线有问题
    uint32_t i,j;
if( stX<endX )
{
        if(stY<endY)
        {
                for(j=stX,i=stY;j<endX,i<endY;)
                { 
                LCD_WriteRAM_Prepare() ;  LCD_WriteRAM( dwColor ) ; 
                j++,i++;
                LCD_SetCursor( j,i  ) ;
                }
        }
        else if(stY>endY)
        {
                for(j=stX,i=stY;j<endX,i>endY;)
                { 
                LCD_WriteRAM_Prepare() ;  LCD_WriteRAM( dwColor ) ; 
                j++,i--;
                LCD_SetCursor( j,i  ) ;
                }
        }
       else//(stY=endY)
        {
                for(j=stX;j<endX;)
                { 
                LCD_WriteRAM_Prepare() ;  LCD_WriteRAM( dwColor ) ; 
                j++;
                LCD_SetCursor(  j,stY ) ;
                }
        }
}//if( stX<endX )
else if( stX>endX )
{
        if(stY<endY)
        {
                for(j=stX,i=stY;j>endX,i<endY;)
                { 
                LCD_WriteRAM_Prepare() ;  LCD_WriteRAM( dwColor ) ; 
                j--,i++;
                LCD_SetCursor( j,i  ) ;
                }
        }
        else if (stY>endY)
        {
                for(j=stX,i=stY;j>endX,i>endY;)
                { 
                LCD_WriteRAM_Prepare() ;  LCD_WriteRAM( dwColor ) ; 
                j--,i--;
                LCD_SetCursor( j, i ) ;
                }
        }
        else//(stY=endY)
        {
                for(j=stX;j<endX;)
                { 
                LCD_WriteRAM_Prepare() ;  LCD_WriteRAM( dwColor ) ; 
                j++;
                LCD_SetCursor(  j,stY ) ;
                }
        }
}//else if( stX>endX )
else//(stX=endX)
{
         if(stY<endY)
        {
                for(i=stY;i<endY;)
                { 
                LCD_WriteRAM_Prepare() ;  LCD_WriteRAM( dwColor ) ; 
                i++;
                LCD_SetCursor( stX,i  ) ;
                }
        }
        else if (stY>endY)
        {
                for(i=stY;i>endY;)
                { 
                LCD_WriteRAM_Prepare() ;  LCD_WriteRAM( dwColor ) ; 
                i--;
                LCD_SetCursor( stX, i ) ;
                }
        }
}
}

在画斜线的时候会出现中间有虚线的情况,而不是一条均匀斜线,如下图


3.LCD上所显示的字符几乎无法辨认。


猜测,可能是更底层的驱动函数有问题。

当然,这次的任务主要是测试utenux操作系统。


专家
2013-06-27 20:58:13     打赏
23楼

在看王总写的培训讲义,操作系统比较抽象



高工
2013-06-27 21:50:17     打赏
24楼
当作一个库用就行了。嵌入式os相当于.net里边流行的框架framework

专家
2013-06-28 09:07:10     打赏
25楼

俺是搞硬件出身的,看之前做的测试都是从驱动出发。

操作系统趁这次学习操作系统。


院士
2013-07-10 11:10:45     打赏
26楼

想不出来为什么斜线为什么有描点丢失。

如果使用算法计算位置的话,会不会因为整数运算时由于取整问题而将两个描点重叠了。


专家
2013-07-11 20:56:28     打赏
27楼

斜线描点,打“勾”的地方应该不是描点丢失,而是在没打“勾”的地方重复描点了。画圆也有同样问题,圆的缺口位置的几个点比较大不知道描了多少次,其余的部分也不圆滑,有的位置没描点。



专家
2013-07-11 22:19:39     打赏
28楼

这几天把光盘里的培训讲义从头到尾过了一边。简要概括如下:

一》任务

任务的七种状态,任务的九种管理功能。

任务同步通信的基本机制:事件标志,信号量,邮箱。

事件标志的六种SVC

信号量的五种SVC

邮箱的五种SVC

任务扩展同步通信的基本机制:互斥体,消息缓冲区,集合点端口

优先级翻转:优先级继承协议,优先级顶置协议

互斥体的五种SVC

消息缓冲区五种SVC

集合点端口五种SVC

二》内存管理

虚拟内存实时性可能降低,虚拟内存管理是通过上层系统扩展实现的。
μT/Kernel不支持虚拟内存,只支持常驻程序。

μT/Kernel只支持1个保护级别,用户应用和系统都在0级上运行。

内存池包括固定尺寸内存池和可变尺寸内存池。
„固定尺寸内存池五种SVC
可变尺寸内存池五种SVC

三》系统时间管理

相对时间,系统时间,超时的时限

设置系统时间, 获得系统时间, 获得系统工作时间
周期性处理的五种SVC

警报处理的五种SVC

四》中断管理

定义中断处理程序,从中断处理程序中返回,禁止所有外部中断,允许所有外部中断,„ 获得存放在 intsts 中外部中断禁止的状态
五》系统状态管理

系统状态管理的六种SVC


在接下来的几天开始做实验教程里的实验。


院士
2013-07-11 23:04:46     打赏
29楼

光盘里面居然还有讲义,改天有时间发我的邮箱里一份呗。

我的光驱读不出来数据了。



专家
2013-07-12 08:47:34     打赏
30楼


乔大师,就是这个讲义啊。从悠龙下载的1.60版的开发包中有个 index.html文件,打开就是下边的图片。



共40条 3/4 1 2 3 4 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]