首页 > 试题广场 >

智能吸尘器(示意图如图所示)是家居环境下进行吸尘的智能家电,

[问答题]
智能吸尘器(示意图如图所示)是家居环境下进行吸尘的智能家电,若以S3C2410芯片为核心来设计其控制系统,该系统的基本功能描述如下:
a.在家居环境中可以自主行走并进行吸尘。在行走中可以探测前方是否有障碍物,若有障碍物时,可以转向或后退,然后再行走。
b.智能吸尘器行走的轨迹可以事先存储。即事先通过遥控器来控制智能吸尘器进行行走,然后把刚才行走的轨迹信息存储在智能吸尘器中。使用时,智能吸尘器按照存储的轨迹信息进行自主行走并进行吸尘。遥控器与智能吸尘器之间通过WiFi通信。
c.需要4个共阴极的8段LED组成的显示器,用来显示计时信息。即智能吸尘器开始工作后,显示器需要显示到计时的时间信息。到计时的时间是事先设定的,到计时时间到时,无论是否设定的轨迹行走完,均停止工作

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

说明:下面是试题解答时需要用到的寄存器格式及相关说明:



<p>😂</p>
发表于 2020-07-10 01:48:54 回复(0)