![](https://img-blog.csdnimg.cn/4beb0785d2244ae3badbdfd69333e9c5.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
嵌入式软硬件
文章平均质量分 73
嵌入式、C语言、开发板、物联网、ARM、软件/硬件。
Mindtechnist
Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,贝叶斯滤波与Kalman估计、多传感器信息融合,机器学习,人工智能,概率论与数理统计,矩阵分析、控制理论。
展开
-
程序的存储态与运行态
认识程序的运行与存储:结合硬件存储器来分析程序在运行和静止时的存储状态。原创 2024-02-02 11:35:49 · 1164 阅读 · 3 评论 -
嵌入式软件设计
嵌入式软件设计体系、中断机制、看门狗、可重入函数讲解。原创 2024-02-02 11:32:21 · 1304 阅读 · 0 评论 -
嵌入式操作系统服务机制
嵌入式操作系统的服务机制讲解。原创 2023-12-01 16:04:25 · 919 阅读 · 0 评论 -
【文末送书】典型IO接口与总线 | SPI、IIC、UART、GPIO
典型的IO接口与总线讲解,包括SPI串行总线、IIC总线、UART和USART、GPIO与GPIB。原创 2023-08-29 12:47:02 · 2414 阅读 · 85 评论 -
操作系统与内核、系统编程与应用编程
计算机系统软硬件组成,操作系统介绍,Linux内核介绍。原创 2023-07-06 21:13:33 · 1471 阅读 · 27 评论 -
嵌入式软件组件经典架构与存储器分类
嵌入式软件组件:ROM Monitor监控程序、Boot Loader、BSP,嵌入式系统经典架构,以及嵌入式系统常用的存储器。原创 2022-08-03 08:15:00 · 815 阅读 · 18 评论 -
操作系统的启动过程——Windows、嵌入式系统、Linux
深入分析WIndows操作系统、Linux操作系统、嵌入式系统的系统启动过程,并附加介绍了Linux操作系统中,init进程的启动级别。原创 2022-08-01 07:30:00 · 761 阅读 · 24 评论 -
程序的存储态与运行态
认识程序的运行与存储:结合硬件存储器来分析程序在运行和静止时的存储状态。原创 2022-07-28 07:30:00 · 770 阅读 · 35 评论 -
MDK编译过程及ARM编译工具链
MDK-ARM也叫做KEIL MDK-ARM、KEIL ARM、Realview MDK、I-MDK、uVision5等。ARM编译器将C/C++元文件编译成可重定位(Relocatable)的目标模块,并且在其中嵌入供uVision调试器或在线调试器调试的符号信息。同时,ARM编译器能帮助生成listing file,它可以包含symbol table(符号表)和交叉引用信息。............原创 2022-07-25 07:45:00 · 3798 阅读 · 88 评论 -
USART串口通讯
USART串口通讯,UART与USART区别,RS-232标准。原创 2022-07-18 07:30:00 · 4890 阅读 · 60 评论 -
【嵌入式】STM32通讯方式
嵌入式中常用的通讯方式分类。原创 2022-07-08 07:30:00 · 1348 阅读 · 32 评论 -
【字符编码详解】ASCII、GB2312、GBK、UTF-8、UTF-16编码与Unicode字符集
在计算机世界中,只有0、1两种数字,不论是英文、中文还是数字,在计算机中都是以01的形式存储的。因此,要想把文字存储到计算机上,就要规定特定的01序列来表示文字。编码就是规定特定的01序列来表示文字的过程,编码表示了字符在计算机中的存储形式。原创 2022-04-01 07:45:00 · 10632 阅读 · 2 评论 -
【嵌入式基础】常用显示器及其参数等概念整理
收集了关于显示器和显示器参数的介绍,并整理如下。原创 2022-03-27 08:15:00 · 1391 阅读 · 0 评论 -
【嵌入式C语言】常用工具函数之数字字符串与十进制数字转换函数
在嵌入式开发中,经常用到的关于数字字符串和十进制数字之间转换相关的工具函数。原创 2022-03-19 13:20:26 · 6247 阅读 · 2 评论 -
【嵌入式C语言】位带操作
位带操作实现了通过普通的加载/存储等指令对单一的1bit进行读写的功能。也就是说把1bit膨胀为32bit的字来操作(位带操作就是用一个地址代表一个比特,正常来说一个地址代表的是32bit,一次性操作的也是32bit)。比如:#define LED0 PBout(1) //其中 PBout(1)是位带操作我们直接LED0 = 1;通过这个位带操作直接将IO口PB1置为了高电平,也就是通过位带操作直接改变了某一bit的值。而普通的操作比如int a = 1;是将a所代表原创 2022-03-12 21:31:51 · 10428 阅读 · 0 评论 -
【驱动详解】如何理解驱动程序
驱动,计算机软件术语,是指驱动计算机里软件的程序。驱动程序全称设备驱动程序,是添加到操作系统中的特殊程序,其中包含有关硬件设备的信息。此信息能够使计算机与相应的设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,没有驱动,计算机中的硬件就无法工作。不同的操作系统,硬件驱动程序也不相同。原创 2022-03-10 22:58:39 · 19909 阅读 · 0 评论 -
【嵌入式C语言】volatile关键字和const关键字
在C语言中,volatile关键字修饰的变量是表示该变量是易变的,要求编译器不优化对该变量的读取;const关键字定义变量存放在常量区,节省堆栈内存。原创 2022-03-09 21:11:03 · 2093 阅读 · 0 评论 -
【C语言实现多态效果实例】
通过函数指针做函数参数实现C语言中的多态效果。原创 2022-03-08 22:21:13 · 823 阅读 · 0 评论 -
【嵌入式C语言】数据存储与数据类型理解
什么是ASCII码,ASCII码是干啥的?数据类型是什么?变量是什么?指针数据类型与指针步长是什么?原创 2022-03-03 23:34:17 · 782 阅读 · 0 评论 -
【嵌入式C语言】字符转字符串,整形数字转字符串技巧(sprintf函数妙用)
嵌入式界面设计、emWin技巧、字符/数字转字符串、sprintf函数原创 2022-03-02 23:24:24 · 1314 阅读 · 0 评论 -
【ARM基础概念:ARMv7架构,ARM(ARM7、ARM9)、Cortex-M4、M7等内核、MCU、MPU、SOC,STM32的一些概念】
arm,m4,m7,cortex,MCU,MPU,CPU,SOC,STM32,ARMv7,架构,指令集,CMSIS标准等基础概念原创 2022-01-18 23:08:10 · 5297 阅读 · 0 评论 -
如何用SEGGER工具烧写程序,烧写地址详解
1.在电脑上找到SEGGER工具包,双击打开J-Flash2.选择新建工程3.选择自己的芯片型号,比如STM32f429IG4.选择OK,新建完成,可以把工程保存在本地,下次可直接打开使用5.把待烧写的bin文件拖入,此时会提示输入烧写地址,这里的烧写地址一般是芯片FLASH的起始地址(因为我们所写的程序都是下载到FLASH中的),且必须在FLASH的内存范围内(编译后程序的大小必须小于FLASH的大小),比如STM32F429的烧写地址是0x08000000。具体每个芯片的FLASH地址可能都不一原创 2022-01-12 22:46:19 · 6964 阅读 · 0 评论 -
MDK(keil)工具:如何使用MDK生成bin文件
在给开发板烧写程序时,有时候我们会用到bin文件,在使用MDK开发时,我们可以在魔法棒配置->output选项中看到生成hex文件的选项卡,图中标号1所示位置如果需要生成bin文件,就需要我们自己配置,配置方法如下,首先在魔术棒中找到User选项卡,并按照下图所示输入命令fromelf.exe --bin --output "@L.bin" "#L"生成的文件名在图一中的红色标号2处设置。...原创 2022-01-12 21:58:02 · 4625 阅读 · 0 评论 -
嵌入式C语言基础:一文读懂#define与typedef的区别
在嵌入式开发中经常会用到宏定义define和typedef,它们俩在使用上有些类似,容易混淆,那么他们有什么区别呢?二者的本质#define是宏定义,它是一种预处理命令,在预处理的时候进行简单的文本替换操作,其表达式一般如下:#define 标识符 字符串 /*宏定义结尾不加;*/在预处理时会把自己定义的标识符替换为宏定义中的字符串,比如:#define PI 3.14这个宏定义的作用是把代码中的PI替换为3.14,在程序中遇到PI就可以把他看作3.14这个常数(前提是在宏定义的作用域内原创 2022-01-11 22:59:11 · 2975 阅读 · 0 评论 -
嵌入式C语言基础之断言
断言一般会用做函数入口参数的有效性判断,在STM32的HAL库中就有很多应用,比如在STM32F429中断优先级分组配置函数中(此处只说断言应用,不对STM32F429的中断分组做过多讨论):void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup){ /* Check the parameters */ assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); /* Set the原创 2022-01-10 22:46:28 · 1851 阅读 · 1 评论