当前位置: 首页 > news >正文

(学习日记)2024.02.29:UCOSIII第二节

写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。


标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。


点击此处进入学习日记的总目录

2024.02.29

  • 四、UCOSIII:新建工程
    • 1、创建文件夹
    • 2、新建工程
  • 五、UCOSIII:调试配置
    • 1、设置软件仿真
    • 2、修改时钟大小
    • 3、添加头文件路径
  • 六、UCOSIII:调试模式中示波器的使用
    • 1、 在app.c中编写main函数
    • 2、调试模式
    • 3、使用示波器
    • 4、常见错误
      • 1. Build时报错 Error: L6218E
      • 2. keil5软件仿真没有实时波形
      • 3. Build时报错 error 65
      • 4. Peripherals显示空白
      • 5. 调试模式时,程序前没有灰块

四、UCOSIII:新建工程

1、创建文件夹

文件夹名称子文件夹孙文件夹文件夹作用
Doc··用于存放对整个工程的说明文件,如readme.txt。通常情况下,我们都要对整个工程实现的功能、如何编译、如何使用等做一个简要的说明
Project··用于存放新建的工程文件
UseruC/OS-IIISource用于存放μC/OS-III源码,其中的代码是纯软件相关的,与硬件无关
UseruC/OS-IIIPorts用于存放接口文件,即μC/OS-III与CPU连接的文件,也就是我们通常所说的移植文件。要想μC/OS-III在单片机上运行μC/OS-III,这些移植文件必不可少
UseruC-CPU·用于存放μC/OS-III根据CPU总结的通用代码,只与CPU相关
UseruC-LIB·用于存放一些C语言函数库
··用于存放用户程序,如app.c,main()函数就放在app.c文件中

在这里插入图片描述

起文件夹名字一定不要用μ,Keil无法识别这个字符,会报一堆错,未来的我连夜回来修改博客(哭)

2、新建工程

  1. Project文件夹新建项目
    在这里插入图片描述
    在这里插入图片描述
  2. 起一个英文名字
    在这里插入图片描述
  3. 选择ARMCM3
    在这里插入图片描述

如果没有ARM的话,参考以下文章:
5.38版本的 Keil5 下载、安装、激活 ——2024年1月20日
我发现我的Keil没有ARM的PackPack Installer还是灰色无法点的,只能花了一中午重装了Keil,太伤心了
在这里插入图片描述

  1. 设置运行环境
    选择好处理器,单击OK按钮后会弹出Manage Run-Time Environment选项框。这里我们在CMSIS栏选中COREDevice栏选中Startup这两个文件即可
    在这里插入图片描述
    单击OKCOREStartup这两个文件就会添加到我们的工程组里面。
    在这里插入图片描述

其中startup_ARMCM3.s是汇编编写的启动文件,system_ARMCM3.c是C语言编写的跟时钟相关的文件。 更加具体的可直接阅读这两个文件的源码。只要是Cortex-M3内核的单片机,这两个文件都适用。

  1. 添加文件组
    在工程里面添加UserμC/OS-III SourceμC/OS-III PortsμC/CPUμC/LIBDoc这几个文件组, 用于管理文件
    鼠标右键Target1,在弹出的选项里面选择Add Group即可添加文件组
    在这里插入图片描述
  2. 添加文件
    分别在User文件夹中新建app.c,在Doc文件夹中新建readme.txt
    在这里插入图片描述

在这里插入图片描述
将文件添加到工程中,添加方式是双击文件组并选择文件
在这里插入图片描述

五、UCOSIII:调试配置

1、设置软件仿真

在这里插入图片描述

2、修改时钟大小

在系统初始文件中,规定时钟为25M
在这里插入图片描述
在软件仿真的时候,确保时间的准确性,代码里面的系统时钟跟软件仿真的时钟必须一致, 所以Options for Target->Target的时钟应该改成25M
在这里插入图片描述

但是本人的keil时钟修改选项是灰色的,查了一下资料才发现是版本的问题
在这里插入图片描述
参考资料:
keil5.36无法修改XTL时钟,导致软件调试时定时时间错误的解决方法
如果是高版本的keil,应该是不需要修改时钟选项(猜测)

3、添加头文件路径

在这里插入图片描述

六、UCOSIII:调试模式中示波器的使用

1、 在app.c中编写main函数

图示与程序如下:
在这里插入图片描述

int flag1;
int flag2;void delay(int count)
{for (; count!=0; count--);
}int main(void)
{/* 无限循环,顺序执行 */for (;;){flag1 = 1;delay( 100 );flag1 = 0;delay( 100 );flag2 = 1;delay( 100 );flag2 = 0;delay( 100 );}
}

点击Build,保证程序没有错误,不然的话无法进入调试模式。
在这里插入图片描述
在这里插入图片描述

2、调试模式

  1. 进入调试模式
    在这里插入图片描述
  2. 只有在程序前出现灰块的程序才会运行
    在这里插入图片描述

3、使用示波器

  1. 打开示波器
    在这里插入图片描述

  2. 把变量加到示波器中
    在这里插入图片描述

  3. 把变量的显示改为bit
    在这里插入图片描述

  4. 点击Run,运行程序
    在这里插入图片描述

  5. 示波器显示如下
    在这里插入图片描述

4、常见错误

1. Build时报错 Error: L6218E

在这里插入图片描述
修改后如下:
在这里插入图片描述

参考资料:
Error: L6218E: Undefined symbol ImageARM_LIB_STACKZILimit (referred from startup_armcm4.o)

2. keil5软件仿真没有实时波形

在view中点击 period windows update 即可
在这里插入图片描述

参考资料:
keil5软件仿真没有实时波形

3. Build时报错 error 65

参考资料:
keil仿真和使用逻辑分析仪调波形

4. Peripherals显示空白

参考资料:
Peripherals显示空白?

5. 调试模式时,程序前没有灰块

在这里插入图片描述

  1. 将优化等级选为-O0,但可能会加大最终代码大小
    在这里插入图片描述
  2. 然后重建工程
    在这里插入图片描述
  3. 进入调试界面,问题解决
    在这里插入图片描述

参考资料:
keil5软件仿真stm32设置 和 调试技巧

相关文章:

  • Cypher语句查询neo4j数据库教程
  • 自定义镜像上传阿里云
  • C++数据结构与算法——二叉树的属性
  • 十三、Qt多线程与线程安全
  • 特斯拉一面算法原题
  • 全排列 全排列 II N皇后
  • Harbor高可用(haproxy和keepalived)
  • 蓝桥杯题练习:平地起高楼
  • c++知识点之 --函数参数默认值
  • 小红书关键词爬虫
  • 光学3D表面轮廓仪微纳米三维形貌一键测量
  • 命令模式(Command Pattern)
  • 在此处打开命令窗口 (Open command window here)
  • 2023年12月CCF-GESP编程能力等级认证Scratch图形化编程三级真题解析
  • Tomcat 架构
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Github访问慢解决办法
  • Javascript 原型链
  • Javascript弹出层-初探
  • java第三方包学习之lombok
  • Java方法详解
  • JWT究竟是什么呢?
  • Linux链接文件
  • miaov-React 最佳入门
  • node入门
  • React系列之 Redux 架构模式
  • 分享一份非常强势的Android面试题
  • 记一次和乔布斯合作最难忘的经历
  • 前端面试之CSS3新特性
  • 前端相关框架总和
  • elasticsearch-head插件安装
  • 浅谈sql中的in与not in,exists与not exists的区别
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.ajax()参数及用法
  • (1)bark-ml
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (一)VirtualBox安装增强功能
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)Linq学习笔记
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net core控制台应用程序初识
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET程序员迈向卓越的必由之路
  • .NET开发人员必知的八个网站
  • .NET使用存储过程实现对数据库的增删改查
  • @cacheable 是否缓存成功_Spring Cache缓存注解