智能吸尘器(示意图如图所示)是家居环境下进行吸尘的智能家电,若以S3C2410芯片为核心来设计其控制系统,该系统的基本功能描述如下: a.在家居环境中可以自主行走并进行吸尘。在行走中可以探测前方是否有障碍物,若有障碍物时,可以转向或后退,然后再行

admin2019-06-06  30

问题 智能吸尘器(示意图如图所示)是家居环境下进行吸尘的智能家电,若以S3C2410芯片为核心来设计其控制系统,该系统的基本功能描述如下:

    a.在家居环境中可以自主行走并进行吸尘。在行走中可以探测前方是否有障碍物,若有障碍物时,可以转向或后退,然后再行走。
    b.智能吸尘器行走的轨迹可以事先存储。即事先通过遥控器来控制智能吸尘器进行行走,然后把刚才行走的轨迹信息存储在智能吸尘器中。使用时,智能吸尘器按照存储的轨迹信息进行自主行走并进行吸尘。遥控器与智能吸尘器之间通过WiFi通信。
    c.需要4个共阴极的8段LED组成的显示器,用来显示计时信息。即智能吸尘器开始工作后,显示器需要显示到计时的时间信息。到计时的时间是事先设定的,到计时时间到时,无论是否设定的轨迹行走完,均停止工作。
    根据上述功能要求的描述,请完善下面的叙述(程序)和回答有关的问题。(完善程序或回答问题所需的寄存器格式见题后的附录)。
    (1)若智能吸尘器的应用软件基于μC/OS—II操作系统上来开发。在软件开发时,若设计者需要对启动引导程序进行设计,那么,根据S3C2410芯片体系结构的要求,其设计的启动引导程序首先需完成异常向量表的设置、并完成关中断和看门狗部件、完成【81】指针的设置等,然后,用指令【82】来引导应用程序(注:应用程序的主函数名为main())。按照S3C2410芯片体系结构的规定,复位异常的向量地址是【83】,各异常向量地址之间相差【84】个字节。因此,智能吸尘器开机或复位后,首先从复位异常向量地址处运行启动引导程序,然后引导应用程序主函数运行,并在主函数中启动μC/OS—II。
    (2)若在启动引导程序中直接引导了用户应用程序的主函数,那么,通常需在应用程序主函数中初始化μC/OS—II操作系统,并创建【85】,建立消息队列,启动任务调度。若用户应用程序的主函数main()的代码设计如下,请补充完善之。
    int main(void)
    {
    ARMTargetlnit();//初始化目标系统的相关硬件
    【86】();//初始化μC/OS—II的函数
    OSTaskCreate(Main_Task,(void*)0,(OS_STK*)&Main_Stack[4095],21);
    OSTaskCreate(Com_RS232,(void*)0,(OS_STK*)&Corn_Stack[4095],22);
    OSTaskCreate(Infra_Red,(void*)0,(OS_STK*)Red_Stack[4095],23);
    msgqueue=OSQCreate(&msgqueueTbl[0],MSG_QUEUE_SIZE);//建立消息队列函数
    【87】();//启动任务调度
    return 0;
    }
    上述的main()函数中任务名为【88】的任务优先级最高,任务名为【89】的任务优先级最低。
    (3)main()函数中的ARMTargetlnit()函数,是完成对目标系统上一些硬件进行初始化。若硬件设计时,WiFi模块通过串口与S3C2410芯片的UART0部件连接,那么,该函数中需要用下面一组语句来初始化相关的硬件部件。
    rGPHCON=(rGPHCON&oxFFFFFF00)【90】;//rGPHCON是端口H的控制寄存器
    rUFCON0=0x0://FIFO disable
    rUMCON0=0x0:
    rULCONO=(【91】<<3)I(0<<2)l(【92】);//设置线路控制寄存器:偶校验,1位停止位,8位数据位
  rUCONO=0x245;//设置控制寄存器
  //设置波特率,小数采用四舍五入
  ruBRDIVo=((int)(PCLK/(115200×【93】)+0.5)一1);//设置波特率为115200bps
  若硬件设计时,4个8段LED选用共阴极的(如图),通过S3C2410芯片端口C的GPC7~GPC0引脚外加同向驱动来控制LED的段信号,GPC11一GPC8引脚外加同向驱动来控制LED的位信号。那么,在ARMTargetInit()函数中还需用下面语句来初始化相关的硬件部件。
    rGPCCON=((rGPCCON 10xOOFFFFFF)&【94】);//rGPCCON是端口C的控制寄存器
    并且用下面语句来初始化LED显示器,使得初始时候4个LED组成的显示器上均不显示字符。
    rGPCDAT=rGPCDAT|【95】;//4个8段LED的位信号线输出“1”,则共阴的LED不显示字符
    (4)软件系统中任务之间通过消息队列来传递数据。μC/OS—II用函数【96】来等待并获得消息,用函数【97】来发送消息(注:{1.1.16}和{1.1.17}空仅填出函数名即可)。若有多个任务在等待消息队列中的消息时,其中任务优先级【98】的任务将获得消息。
    (5)Main_Task任务函数将根据接收到的消息类型,来控制智能吸尘器的动作,并控制LED显示器上的到计时时间显示。假设只在GPC8引脚所控制的LED上显示字符4,那么,在段信号线GPC7~GPC0上输出的数据组合是【99】,在位信号线GPC11~GPC8上输出的数据组合是【100】。(注:{1.1.19}{1.1.20}空用二进制形式表示,GPC0对应于a段、GPCI对应于b段、…、依此顺序对应)。

说明:下面是试题解答时需要用到的寄存器格式及相关说明
1)端口C控制寄存器(GPCCON)的格式

2)GPHCON寄存器的格式

3)ULCONn寄存器的格式

选项

答案(1)【81】堆栈【82】BL_main【83】0x00000000【84】4 (2)【85】任务【86】OSInit【87】OSStart【88】Main_Task【89】Infra_Red (3)【90】0x000000AA【91】5【92】3【93】16【94】0xFF555555【95】0x0F00 (4)【96】OSQPend【97】OSQPost【98】最高 (5)【99】01100110【100】1110

解析 系统上电或复位后,首先执行的是“B ColdReset”指令,系统跳转到标号为ColdRest处接着执行,在完成了关看门狗定时器、关中断、初始化各模式的堆栈、初始化存储器等功能后,执行指令“BL_main”跳转到C语言的主函数处执行。按照S3C2410芯片体系结构的规定,复位异常的向量地址是0x00000000,各异常向量地址之间相差4个字节。
在应用程序的main()函数中除了完成必要的AEM处理器初始化外,还必须初始化μC/OS—II操作系统、并创建多任务(至少创建一个任务)、启动多任务调度等;初始化μC/OS—II的函数用OSInit();启动多任务调度用OSStart();任务优先级的值越小表示任务优先级越高,反之亦然。
该题主要是完成对GPH、GPC扣的初始化设置、线路控制器配置、波特率设置以及LED控制输出,此处LED是共阴极接法。对照控制寄存器的格式,设置为相应的输入输出和使能功能。
在μC/OS—II操作系统中,一般用OSQPend()函数来等待并获得消息,用函数OSQPost()来发送消息;当有多个任务在等待消息队列中的消息时,其中任务优先级最高的任务将获得消息。
题中LED为共阴极接法,要显示4,则b、c、f、g四段需要被点亮,分别对应GPCI、GPC2、GPC5、GPC6;在位信号线GPC11~GPC8上输出的数据组合是1110。
转载请注明原文地址:https://kaotiyun.com/show/YYMZ777K
0

最新回复(0)