Bruceoxl
BruceOu,于2017年10月13日开始在CSDN上写博客,博客专注于嵌入式开发、人工智能等。欢迎各位朋友来访!
邮箱: ouxiaolong@bruceou.cn
展开
-
《嵌入式 - 深入剖析STM32》STM32 启动流程详解(GCC)
对于我们常用的桌面操作系统而言,我们在开发应用时,并不关心系统的初始化,绝大多数应用程序是在操作系统运行后才开始运行的,操作系统已经提供了一个合适的运行环境,然而对于嵌入式设备而言,在设备上电后,所有的一切都需要由开发者来设置,这里处理器是没有堆栈,没有中断,更没有外围设备,这些工作是需要软件来指定的,而且不同的CPU类型、不同大小的内存和不同种类的外设,其初始化工作都是不同的。本文将以STMF103(基于Cortex-M3)为例进行讲解。原创 2022-11-24 23:57:43 · 2905 阅读 · 0 评论 -
《嵌入式 - 深入剖析STM32》STM32 启动流程详解(Keil)
开发环境:处理器:STM32F103MDK:5.30STM32CubeMX:6.0.1对于我们常用的桌面操作系统而言,我们在开发应用时,并不关心系统的初始化,绝大多数应用程序是在操作系统运行后才开始运行的,操作系统已经提供了一个合适的运行环境,然而对于嵌入式设备而言,在设备上电后,所有的一切都需要由开发者来设置,这里处理器是没有堆栈,没有中断,更没有外围设备,这些工作是需要软件来指定的,而且不同的CPU类型、不同大小的内存和不同种类的外设,其初始化工作都是不同的。本文将以STMF103(基于Cort原创 2021-11-05 22:54:31 · 3603 阅读 · 2 评论 -
《嵌入式 - 深入剖析STM32》详解STM32位带操作
我相信很多朋友在学习单片机之前都学习过51单片机,假设在51单片机的P1.1的IO口上挂了一个LED,那么你单独对LED的操作就是P1.1 = 0或P1.1 = 1,这样你就可以单独的对P1端的第一个IO口进行上下拉操作,然而对于STM32,是没有这种操作的,那么为了像51单片机一样能够单独的对某个端的某一个IO单独操作,就引入了位带操作,简而言之,就是为了去单独操作STM32里面PA的第1个IO口,所以才有了位带这样的操作机制。1什么是位带操作在讲解位带操作之前,首先要搞清楚什么是位带操作。我们知道,原创 2021-10-05 22:50:48 · 4897 阅读 · 2 评论 -
《嵌入式 - 深入剖析STM32》深入理解STM32内存管理
在讨论STM32的内存之前,先来看看STM32的存储器系统,我们知道,STM32大都属于Cortex-M系列的处理器,可以对32的存储器进行寻址,因此存储器的寻址空间能够达到4G,这就意味着指定和数据共用相同的地址空间,也就是将程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。数据字节以小端格式存放在存储器中。一个字里的最低地址字节被认为是该字的最低有效字节,而最高地址字节是最高有效字节。1 STM32存储器架构4G的地址空间就是地址编码的范围。所谓编码就是对每一个程序存原创 2021-08-17 21:41:08 · 1405 阅读 · 2 评论 -
《嵌入式 - 深入剖析STM32》STM32高精度延时实现
1前言在STM32编程过程中经常用到延时函数,最常用的莫过于微秒级延时和毫秒级延时。那么本文针对STM32的延时进行分析和实验。关于STM32的时钟系统,参考笔者博文。详解STM32时钟系统2裸机延时2.1普通延时这个比较简单,让单片机做一些无关紧要的工作来打发时间,经常用循环来实现,不过要做的比较精准还是要下一番功夫。下面的代码是在网上搜到的,经测试延时比较精准。//粗延时函数,微秒void delay_us(u16 time){ u16 i=0; while(ti原创 2021-01-19 21:01:51 · 1835 阅读 · 1 评论 -
《嵌入式 - 深入剖析STM32》STM32中断详解
原文地址1 异常类型CM3内核支持256个中断,其中 16个 内核中断和240个外部中断,并具有256级可编程中断设置。STM32并没有使用CM3的全部内容,而是使用了一部分。STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程中断优先级。STM32F103 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。其中系统异常有 8 个(如果把 Reset 和 HardFault 也算上的话就是 10 个),外部中断有 60个。除了个别异常的优先级被定死外,其它原创 2021-01-17 11:19:51 · 1666 阅读 · 0 评论 -
《嵌入式 - 深入剖析STM32》详解STM32时钟系统
时钟是处理器运行的基础,时钟信号推动处理器内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定CPU速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。为什么 STM32 要有多个时钟源呢?我们在学习51单片机时,其最小系统必有晶振电路,这块电路就是单片机的时钟来源,晶振的振荡频率直接影响单片机的处理速度。STM32相比51单片机就复杂得多,不仅是外设非常多,就连时钟来源就有四个。但我们实际使原创 2021-01-17 10:41:52 · 3019 阅读 · 1 评论 -
《嵌入式 - 深入剖析STM32》 深入理解STM32串口通信
1 串口通讯协议简介串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设; STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输原创 2020-11-01 18:17:06 · 3596 阅读 · 0 评论