第二次作业要求
这次作业内容有些多,里面有很多陌生的东西,先梳理一下:
1.实现代码管理:
将例程项目Fork到自己的repository,同时在本地电脑安装git工具,创建云端本地的文件同步。
2.安装仿真软件:
安装好QEMU来模拟stm32f4评估板的运行,实现Demo1的仿真运行,(以此调高调试速度、节约调试成本)。
3.学习和实现FreeRTOS多任务同步和通信:
学习Demo1的闪灯例程,以此熟悉FreeRTOS的API接口和使用、熟悉main.c的代码结构;
编程实现如下要求:
- 创建三个任务:Sender_Task,Receiver_Task, Monitor_Task
- Sender_Task的任务执行周期为2ms,Receiver_Task的任务执行周期为1000ms, Monitor_Task的任务执行周期为10000ms。
- Sender_Task在每个执行周期向Receiver_Task发送一个32位无符号整数,第一次发送1,然后依次发送2,3,4......,发送完10000后再从1开始发送。同时对发送的数据进行计算累加计算并保存当前累加结果。
- Receiver_Task对接收到的数据进行和Sender_Task同样的累加计算并保存当前累加结果。
- Monitor_Task在每个执行周期检查Sender_Task发送的每个数据是否都被Receiver_Task正确的接收和处理,请自行设计一种检查机制并实现。
- 可利用STM32F429I Discovery开发板的相关硬件(LED/LCD/串口)来输出相关状态信息。
- 使用FreeRTOS的任务间通信和同步API完成上述功能。
作业过程:)
1.安装QEMU、编译Demo1、运行仿真。
https://github.com/wangsanhust/STM32F429_Discovery_FreeRTOS_9
期间:
直接向系统PATH变量文件里写入qemu路径:
sudo vim /etc/profile
最后一行添加如下内容保存,注销再登录即可,注意,我的qemu文件夹在~/RTCSD2017/work/路径下。
export PATH=~/RTCSD2017/work/qemu/2.8.0-201612271623-dev/bin/:$PATH
make后,运行qemu.sh,成功启动QEMU的GUI,红灯闪两次路灯闪一次的循环闪烁。
2.学习分析Demo1例程的main.c及涉及的RTOS API。
?分析main.c:
http://www.cnblogs.com/wangsan-hust/p/7615749.html
?学习RTOS API:
FreeRTOS使用指南 链接
?本例程里用到的函数:
vTraceEnable(TRC_INIT); //Trace ??? vTraceEnable(TRC_START); xTaskCreate( ToggleLED1_Task, /* Function pointer */ "Task_LED1", /* Task name - for debugging only*/ configMINIMAL_STACK_SIZE, /* Stack depth in words */ (void*) NULL, /* Pointer to tasks arguments (parameter) */ tskIDLE_PRIORITY + 3UL, /* Task priority*/ NULL /* Task handle */ ); vTaskStartScheduler(); //开启任务调度 vTaskDelay(1000 / portTICK_RATE_MS); //延时1000ms
3.编程作业。
时间: 2024-10-19 10:30:52