单片机第四季-第二课:uCos2源码-BSP

1,初始uCos2

文件中uC开头的为uCos相关的。

2,uCos2源码工程建立

建立Source Insight工程

寻找main函数

(1)RTOS其实就是一个大的裸机程序,也是从main开始运行的
(2)main之前也是有一个汇编的启动文件的
(3)main中调用了很多初始化函数

 bsp部分介绍:
(1)bsp是board support packet 板级支持包
(2)bsp其实就是对硬件操作的封装(底层驱动或中间驱动层封装)
(3)完全移植的工作量主要就在bsp这一块

3,BSP部分源码解析

BSP文件夹中主要有图中所示四个文件。

BSP_Init(void) 在bsp.c中定义,在app.c中被main函数调用。

BSP_Init(void)作用就是板载所有外设设备的初始化。

4,BSP源码测试

详细工程见:

包含BSP的工程

注意1:串口代码中有以下内容。

#ifdef __GNUC__ 
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 
     set to 'Yes') calls __io_putchar() */ 
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) 
#else 
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) 
#endif /* __GNUC__ */ 

/*******************************************************************************
* Function Name  : PUTCHAR_PROTOTYPE
* Description    : Retargets the C library printf function to the USART.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
PUTCHAR_PROTOTYPE
//{
//  /* Write a character to the USART */
//  USART_SendData(USART1, (u8) ch);
//
//  /* Loop until the end of transmission */
//  while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
//  {
//  }
//    return ch;
//}
{
   while (!(USART1->SR & USART_FLAG_TXE));
   USART1->DR = (ch & 0x1FF);
   
   return ch;
}

printf函数本身内部是调用__io_putchar(GNUC)或者fputc(Windows)来实现的,所以我们在单片机里面要移植printf,就得去实现__io_putchar(GNUC)或者fputc(Windows),这种就叫做重定位。

MDK5是在Windows环境中,所以使用的是fputc(int ch, FILE *f),FILE的定义在stdio.h,所以要#include <stdio.h>。

注意2:使用printf函数时,必须要勾选上Use MicroLIB选项。

强调:在MDK中移植printf后,必须勾选:USE MicroLib后才能成功,否则就什么错都不报就是串口不输出东西。

STM32中实现printf的细节,参考:http://masust.blog.163.com/blog/static/14695408420123308328203/

5,总结

本章节内容BSP是对外设驱动的初始化,与前边通过stm32标注库操作没有本质区别,与uCos有什么关系呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/474804.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧交通运维合集:基于图扑数字孪生技术的解决方案

城市交通作为城市与区域交通体系的核心&#xff0c;其完善程度和发展水平是评价城市现代化水准的关键指标之一。 城市交通数字孪生技术正在成为城市交通管理的关键工具&#xff0c;支持系统的高效运行和安全保障。随着互联网、大数据和人工智能技术的进步&#xff0c;城市交通…

自写系统运行windows程序

运行已经基本正常了。 源代码在 https://gitee.com/enrique11/cxos.git

C++除了Qt还有什么GUI库?

C除了Qt还有什么GUI库&#xff1f; 先&#xff0c;不要折腾&#xff0c;不要想着用 C 来做 App 类的 GUI 开发。 所以你问用 c gui 库&#xff0c;本来确实有很多&#xff0c;但是经过几十年的沉淀&#xff0c;最后只留下一个 qt quick 和其他特殊需求的库&#xff08;包括 qt…

2023年蓝桥杯省赛——平方差

目录 题目链接&#xff1a;1.平方差 - 蓝桥云课 (lanqiao.cn) 思路 暴力偷分 发现规律 发现蹊跷 总结 题目链接&#xff1a;1.平方差 - 蓝桥云课 (lanqiao.cn) 思路 咱就是说&#xff0c;写蓝桥杯的题目的第一件事情是什么&#xff0c;那就是不管三七二十一先暴力一下把能…

图像分类神经网络综述

一、图像分类神经网络发展的四个阶段 经典深度卷积神经网络模型注意力机制卷积神经网络模型轻量级卷积神经网络模型神经网络架构搜索模型 二、深度卷积神经网络模型 1、LeNet 其包含 3 个卷积层 、2 个池化层和 2 个全连接层 , 每个卷积层和全连接层均有可训练的参数, 为深…

Xftp传输文件名乱码问题

背景 项目有个静态文件下载时是几天前的老文件&#xff0c;最新文件不下载。检查路径啥的都没问题后&#xff0c;确定就是当前文件夹。 发现 正当纳闷时候&#xff0c;当前文件中有一个乱码文件&#xff0c;没多想&#xff0c;让同事看一下&#xff0c;他看到老文件名是正常的…

鸿蒙Harmony应用开发—ArkTS-属性动画

组件的某些通用属性变化时&#xff0c;可以通过属性动画实现渐变过渡效果&#xff0c;提升用户体验。支持的属性包括width、height、backgroundColor、opacity、scale、rotate、translate等。布局类改变宽高的动画&#xff0c;内容都是直接到终点状态&#xff0c;例如文字、can…

2024Python计算机二级7

带符号的定点数之中&#xff0c;正数的原码、补码和反码均相同&#xff0c;负数的反码是对该数的原码除符号位外各位取反&#xff0c;补码是在该数的反码的最后&#xff08;即最右边&#xff09;一位上加1&#xff1b;不管是正数还是负数&#xff0c;其补码的符号位取反即是偏移…

Linux常用命令之文件权限类

1.1 Linux的文件属性 在Linux里使用ll或者ls-l命令来显示一个文件的属性以及文件所属的用户和组。 以-开头&#xff1a;普通文件 以d开头&#xff1a;目录 以l开头&#xff1a;链接 以c开头&#xff1a;字符类型的设备文件(例如&#xff1a;鼠标、键盘&#xff0c;他们输入…

网站HTTPS证书怎么获取?有免费的吗?

嘿&#xff0c;朋友们&#xff01;想让你的网站更加安全可靠&#xff0c;让访客安心浏览吗&#xff1f;那就离不开SSL证书的帮助了。SSL证书就像是你网站的守护盾&#xff0c;它能够加密网站与用户浏览器间的通信&#xff0c;使得数据传输过程中既安全又私密。今天&#xff0c;…

【MySQL】存储过程、存储函数、触发器

目录 存储过程介绍技术背景存储过程的作用与优势存储过程跟自定义函数很像。它们的区别是&#xff1a; 存储过程的缺点存储过程的特性基本存储过程使用1.创建语法语法说明&#xff1a;使用案例1.创建获取新闻类别数量的存储过程2.创建获取指定新闻类别ID下新闻数量的存储过程 2…

冶炼金属---蓝桥杯c++B组真题

题目描述如下 本题当然可以简单的模拟题目含义&#xff0c;暴力去做&#xff0c;把v从1枚举到1e9&#xff0c;找哪两个数分别使得a/x等于b&#xff0c;并且是该情况的边界&#xff0c;但这样的时间复杂度是n&#xff0c;对于1e9来说是会超时的&#xff0c;我们要想办法优化 首…

IOS推送证书过期如何更新证书(uni-push)?

1. 生成CSR文件 1.2 选择存储到磁盘 - 填写相关信息 - 继续 - 保存后续使用 2. 登录苹果开发者后台&#xff0c;重新创建推送证书 2.1 点击Account - 进入此页面 点击证书、标识符和描述文件下的证书 2.2 点击Identifiers选择要更新的项目2.3 选择Push Notifications&#xf…

TTP 错误 500.19 - Internal Server Error

1、错误详细内容如下图所示&#xff1a; 2、以管理员身份运行命令提示符&#xff1a; %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules 3、问题解决了&#xff0c;哈哈哈哈~&#xff01;

数据库运行状况和性能监控工具

数据库监控是跟踪组织中数据库的可用性、安全性和性能的过程&#xff0c;它涉及通过跟踪各种关键指标来分析数据库的性能&#xff0c;确保数据库的正常运行并具有深入的可见性&#xff0c;并在出现潜在问题时触发即时警报&#xff0c;以采取主动措施来确保数据库的高可用性。 …

炼丹!训练 stable diffusion 来生成LoRA定制模型

LoRA&#xff0c;英文全称Low-Rank Adaptation of Large Language Models&#xff0c;直译为大语言模型的低阶适应&#xff0c;这是微软的研究人员为了解决大语言模型微调而开发的一项技术。 比如&#xff0c;GPT-3有1750亿参数&#xff0c;为了让它能干特定领域的活儿&#xf…

【C++从练气到飞升】04---拷贝构造函数

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 ⛳️推荐 一、拷贝构造函数的引入 1. 以日期类为例:进行的值拷贝是不会发生错误的 2. 以栈类为例:进行的值拷贝会发现发…

AI论文速读 |(Mamba×时空图预测!) STG-Mamba:通过选择性状态空间模型进行时空图学习

&#xff08;来了来了&#xff0c;虽迟但到&#xff0c;序列建模的新宠儿mamba终于杀入了时空预测&#xff01;&#xff09; 论文标题&#xff1a;STG-Mamba: Spatial-Temporal Graph Learning via Selective State Space Model 作者&#xff1a;Lincan Li, Hanchen Wang&…

Java中的I/O讲解(超容易理解)(中篇)

如果想观看更多Java内容 可上我的个人主页关注我&#xff0c;地址 子逸爱编程-CSDN博客https://blog.csdn.net/a15766649633?spm1000.2115.3001.5343 使用工具 IntelliJ IDEA Community Edition 2023.1.4 使用语言 Java8 代码能力快速提升小方法&#xff0c;看完代码自己…

学几招静态路由配置技巧,让你事半功倍!

中午好&#xff0c;我的网工朋友。 静态路由是在网络设备上手动配置的路由信息&#xff0c;用于指定数据包的传输路径。 无论是项目中交换机的静态路由配置&#xff0c;还是在公司网络中路由器的静态路由设置&#xff0c;都有非常多的应用。 与动态路由协议不同&#xff0c;…