推荐阅读最新更新时间:2026-03-20 12:38
基于STM32从零写操作系统系列---将printf指向串口输出
为什么需要printf? 首先,这个printf不是标准C中的printf,这个printf是自己参考标准库实现的。只是简单地完成了打印输出int,long long int, unsigned int, unsigned long long int, float, double和十六进制数等功能。主要用于在以后的学习中,输出变量、寄存器等的数据,便于调试程序。 1.函数调用中的参数传递 根据《Procedure Call Standard for the ARM ® Architecture》(文章结尾有下载分享)这个文档可知,标准规定在寄存器(r0-r3)和堆栈中传递参数。对于采用少量参数的子程序,仅使用寄存器,大大减少了
[单片机]
基于STM32从零写操作系统系列---熟悉纯windows交叉编译环境
目的: 熟悉在纯windows下的交叉编译环境,了解如何下载BIN格式的程序文件到单片机。 实验2: 一个简单的交叉编译与程序下载过程 环境搭建(以我的平台为例): 安装win7 32位,具体教程可百度 安装make和gcc-arm-none-eabi交叉编译工具,具体教程可百度 安装ST-Link Utility软件 在windows系统上安装编辑器,如notepad++ make,gcc-arm-none-eabi,ST-Link Utility软件已在百度云分享: 链接:https://pan.baidu.com/s/1DlzYMo8oZsnF9ammJuuZoQ 提取码:dc5h 具体实验过程: 1.在w
[单片机]
基于STM32从零写操作系统系列---bootloader
本章主要使用汇编语言编写STM32F103(以下称为“该芯片”)的启动代码。具体结构如图: 启动模式 该芯片可以通过设置BOOT0和BOOT1两个引脚,选择不同的启动方式,正常情况下BOOT0=0,BOOT1=0(0为低电平)。即,芯片将从Flash中加载代码启动。 当芯片上电/复位后,芯片首先从地址0x0000_0000处获取栈地址,然后将地址0x0000_0004处的值赋值给PC寄存器。按照PC寄存器的值,取第一条指令,执行......具体如图: 地址0x0800_0205处的具体代码如图: 简单来说,地址0x0000_0004处存放的是复位处理函数的地址。当上电/复位时,芯片硬件会自动将
[单片机]
中兴发布了天机A31系列,支持双操作系统
集微网4月21日消息,在近日举办的中兴行业终端渠道合作伙伴大会&新品发布会上,中兴正式发布了行业终端天机A31系列。 据中兴官方介绍,天机A31系列不仅以其独创的三主摄四阵列影像系统,开启了移动影像的第三纪元,还支持双操作系统和独立安全加密芯片,是行业终端的顶级旗舰产品。 除了发布天机A31系列之外,也有中兴高管谈到了对行业终端的看法。 中兴总裁徐子阳指出,中兴致力成为国内行业终端领先品牌。从终端产品角度来说,中兴在底层协议、通讯能力、天线技术等方面,具备其他独立终端品牌不可比拟的先天优势。2021年,中兴将进一步提升政企的战略定位,持续加大资源投入,提升服务行业客户的宽度和深度,为行业客户提供极致、安全的解决方案。同时,抓住
[手机便携]
Keil环境下配置GCC编译器以开发STM32 C语言项目:探讨C语言特性及第23条指南
Keil 配置 GCC 编译器用于 STM32 和 C++23 特性 Keil 配置 GCC 编译器 安装工具链 Arm GNU Toolchain arm-none-eabi 创建Keil工程 前置步骤:获取依赖代码 方式1 使用STM32CubeMX辅助生成 方式2 Github 创建Keil工程 管理工程 添加分组Core/Src 添加分组Core/Startup 添加分组Drivers/STM32F1xx_HAL_Driver 设置GCC工具链(关键) 配置编译目标(重要) 配置编译生成的文件目录 配置C、C++选项 配置汇编选项 配置链接选项 添加函数
[单片机]
STM32学习中常见的一些C语言基础知识
C语言是单片机开发中的必备基础知识,本文列举了部分 STM32 学习中比较常见的一些C语言基础知识。 1位操作 下面我们先讲解几种位操作符,然后讲解位操作使用技巧。C语言支持以下六种位操作: 下面,重点讲解一下位操作在单片机开发中的一些实用技巧。 在不改变其他位的值的状况下,对某几个位进行设值 这个场景在单片机开发中经常使用,方法就是我们先对需要设置的位用&操作符进行清零操作,然后用 | 操作符设值。 比如,我要改变 GPIOA 的状态,可以先对寄存器的值进行&清零操作: GPIOA-》CRL &= 0xFFFFFF0F; /* 将第 4~7 位清零 */ 然后再与需要设置的值进行 | 或运算: GPIOA-》CRL ¥=
[单片机]
STM32学习中关于C语言基础知识点
C语言是单片机开发中的必备基础知识,这里就列举部分STM32学习中会遇见的C 语言基础知识点。 01 位操作 下面我们先讲解几种位操作符,然后讲解位操作使用技巧。C语言支持如下6中位操作: 73bb030a-c64a-11ed-bfe3-dac502259ad0.png 六种位操作 下面我们想着重讲解位操作在单片机开发中的一些实用技巧。 1. 1 在不改变其他位的值的状况下,对某几个位进行设值。 这个场景在单片机开发中经常使用,方法就是先对需要设置的位用&操作符进行清零操作,然后用 | 操作符设值。 比如我要改变GPIOA的状态,可以先对寄存器的值进行&清零操作: 73c9f4c8-c64a-1
[单片机]
STM32中较为常见的C语言基础知识
C语言是单片机开发中的必备基础知识,本文列举了部分 STM32 学习中比较常见的一些C语言基础知识。 1位操作 下面我们先讲解几种位操作符,然后讲解位操作使用技巧。C语言支持以下六种位操作: 下面,重点讲解一下位操作在单片机开发中的一些实用技巧。 在不改变其他位的值的状况下,对某几个位进行设值 这个场景在单片机开发中经常使用,方法就是我们先对需要设置的位用&操作符进行清零操作,然后用 | 操作符设值。 比如,我要改变 GPIOA 的状态,可以先对寄存器的值进行&清零操作: GPIOA- CRL&=0xFFFFFF0F;/*将第4~7位清零*/ 然后再与需要设置的值进行 |
[单片机]