推荐阅读最新更新时间:2026-03-22 11:31
Keil5 STM32 C++开发 ARM V6编译器的使用教程
Keil5更新之后,开始支持ARM V6编译器,新版本的编译器对C++有了更多的支持,在编译方面也做了很多的改善,具体的没有详细了解,本文只是对STM32 开发下,使用V6版本的编译器进行STM32的C++开发作一个记录,方便和大家交流和参考。至于说为什么STM32要C++开发,这个没有解释,只是个人觉得C++比C有更多的方便,使得编程更加的容易,C++有更多的生态.... 开始上教程:Keil5的安装和破解以及STM32 pack库的安装不在本文范围之内,需要的话请自己百度,网上以及有了很多的教程。 笔者打开以前的STM32 工程,想自己通过更改编译器版本实现,结果发现编译之后会出现很多的错误,故还是采取Keil5的
[单片机]
STC89C52单片机串口通信以及代码演示
串口介绍 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。 51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。 硬件电路 简单双向串口通信有两根通信线(发送端TXD和接收端RXD) TXD与RXD要交叉连接 当只需单向的数据传输时,可以直接一根通信线 当电平标准不一致时,需要加电平转换芯片 下图是以前的投影仪的插口线脚分布图,可以看的也
[单片机]
C++代码脚本实现STM32启动
STM32系列微控制器广泛应用于嵌入式系统开发,其启动过程对于理解系统如何从上电复位到执行用户代码至关重要。本文将详细介绍如何使用C++编写STM32的启动脚本,并以STM32F103为例进行说明。 一、启动过程概述 STM32微控制器的启动过程始于复位操作。当处理器复位后,它会从存储器的特定位置读取启动向量,这些向量决定了系统的初始堆栈指针和复位处理程序的地址。对于Cortex-M3和Cortex-M4内核的STM32微控制器,这一机制尤其关键。 复位向量表:复位后,Cortex-M处理器从存储器地址0x00000000开始读取前两个32位字。第一个字是主堆栈指针(MSP)的初始值,第二个字是复位向量,即复位处理程序
[单片机]
嵌入式开发学习(10)<汇编写启动代码之设置栈、调用c语言、开关看门狗和开关iCache>
C语言运行时需要和栈的意义: “C语言运行时(runtime)”需要一定的条件,这些条件由汇编来提供。C语言运行时主要是需要栈 C语言与栈的关系:C语言中的局部变量都是用栈来实现的。如果我们汇编部分没有给C部分预先设置合理合法的栈地址,那么C代码中定义的局部变量就会落空,整个程序就死掉了。 我们平时在编写单片机程序(譬如51单片机)或者编写应用程序时并没有去设置栈,但是C程序还是可以运行的。原因是:在单片机中由硬件初始化时提供了一个默认可用的栈,在应用程序中我们编写的C程序其实并不是全部,编译器(gcc)在链接的时候会帮我们自动添加一个头,这个头就是一段引导我们的C程序能够执行的一段汇编实现的代码,这个代码中就帮我们的C程序设
[单片机]
linux上使用J-Link调试S3C2440裸机代码
工具: segger的jlink仿真器 segger的jlink for linux 交叉编译工具链里面的arm-xx-linux-xx-gdb 初始化脚本 工具安装 segger的jlink for linux 进入Segger官网--- Download--- J-Link/J-Trace--- J-Link Software and Documentation Pack。有deb、rpm、tgz三种包可供选择,随便选一个,我选的是tgz。由于我的仿真器是和谐版,所以我不敢选择高版本的J-Link,选择Older versions。下载一个比较老的,我下的是最老的。 解压至你要安装的目录。里面有个README.t
[单片机]
VectorCAST在汽车电子C++代码测试的应用
随着汽车行业的发展,软件定义汽车已成为汽车产业达成的共识发展趋势,软件在汽车产品中也承担着越来越重要的角色,车身域各功能的实现,少则几千行代码,动辄百万行代码。随着汽车产业功能多样性以及复杂度的增加,传统的基于C代码开发的模式已不能满足某些特殊功能需求的实现,需要向更高级别的语言进化,实现复杂功能的开发。 1 C++语言的广泛应用 众所周知,C代码是面向过程的语言,具有执行速度快以及效率高的特点,在嵌入式开发领域占据很大的比重,是嵌入式系统、尤其面向底层的主要编程语言。但是随着汽车行业智能化以及网联化的发展,更多的是聚焦在复杂的应用以及算法开发上,对性能的要求就会非常高,比如智能驾驶,智能网联等这类项目,相比C语言,具有面
[嵌入式]
在STM32单片机上运行除零运算的C程序代码时为何程序不崩溃?
众所周知,在 C 语言中,当一个数除以0的时候,会导致除法运算异常。程序也会因此崩溃。 为了避免程序崩溃,我们需要在代码中包含对 0 的判断。 但是呢,在 STM32 单片机上运行除零运算的C程序代码时,却不会出现程序崩溃的现象。这是怎么回事呢? 今天来简单聊一聊这个问题。 聊一聊 按照常规的认知,如果 C 语言程序代码中出现除以零的操作时,会进入异常处理,而导致程序出现异常。 有小伙伴遇到过这种场景,除零操作后续的代码可以正常执行。其单片机为STM32系列单片机。 我们查阅 Cortex-M3 指南,可以看到除以零操作会导致用法异常(Usage Fault)。 从中可以得知,进入Usage Fault 是有前提条件的,即
[单片机]
十三、S3C2440 裸机 — 初始化代码及MMU
13.1 NOR FLASH 搬运 把程序从 nor flash 上搬运到 SDRAM 中 程序存储在 nor flash 上,运行时将程序搬运到 SDRAM 中运行 nor flash 启动:nor flash 的地址从 0x0000 0000 开始,CPU 可以直接在 nor flash 上运行程序 在 nor flash 上运行程序很慢 SDRAM:地址为 0x3000 0000,程序烧录在 nor flash 上,运行时,将 nor flash 上的代码搬运至 SDRAM 中运行 nor flash 启动: 初始化寄存器 关闭看门狗 设置存储控制器 复制代码到 SDRAM 中 跳转 main
[单片机]