随笔分类 - 嵌入式
摘要:剖析startup_stm32f407xx.s文件 感谢gcc编译环境下ARM汇编语法(伪指令)提供的相关ARM伪指令功能的介绍,本文据此详细介绍STM32F407芯片所使用的startup_stm32f407xx.s文件 文件头注释 文件开头是关于文件的描述,先粘过来后面解释: /** *****
阅读全文
摘要:原文:https://blog.csdn.net/guoyunfei20/article/details/76013892 ubuntu安装boost 根据自己情况下载合适的boost版本,加压到指定目录 // 官网 www.boost.org // 历史版本下载列表 http://www.boos
阅读全文
摘要:固定IP下虚拟机网卡配置及ssh 宿主机配置 将IP配置为DHCP,查看本机IP,记下IPV4的IP地址,例如192.168.30.47,记下当前默认DNS地址192.168.30.1,即: IP地址:192.168.30.47 子网掩码:255.255.255.0 默认网关:192.168.30.
阅读全文
摘要:回调函数和表驱动法编程 回调函数 回调函数其实就是在一个函数里面调用了另一个函数,而调用哪个函数是由调用回调函数的人决定,举个简单例子: 这里的func_callback就是回调函数,它的执行结果根据传进来的函数指针p的实际指向函数不同而不同,即传入加法add得到的是加法计算,传入减法sub得到的是
阅读全文
摘要:W25QXX系列芯片手册学习 概况 The W25Q128BV (8M bit) Serial Flash memory provides a storage solution for systems with limited space, pins and power. The 25Q serie
阅读全文
摘要:背景 迁移华为的liteOS到STM32F4的开发板上,按照官方的步骤修改makefile后报错: 解决过程 根据Makefile的报错地点可以看出是在对.S文件的编译过程中找不到文件所致,将结果打印出来: 注意这里 ,".d"后面紧跟着./Middlewares,这说明本该分开的两个参数被合并到一
阅读全文
摘要:[TOC] STM32 搭建CUBE.AI的demo工程 ST公司在自家的CubeMX中加入了Cube.AI人工智能神经网络开发工具包,这次来试试如何在自己的这个资源紧张的小开发板上使用下神经网络吧:joy: 我在这里用cube.ai的主要目的是得到工具包文件,以便后续迁移其他环境时使用。 准备工作
阅读全文
摘要:STM32 一种参数检查用法介绍 是一个在代码中很常见的写法,这个函数的功能一般是对函数参数的合法性进行检查,这里以一个例子进行分析: assert_param(IS_GPIO_ALL_PERIPH(GPIOx)) 函数的参数是 ,原型为: 这个宏定义的作用就是检查参数PERIPH,判断参数PERI
阅读全文
摘要:中断和事件(Interrupts and events) 嵌套向量中断控制器(Nested vectored interrupt controller NVIC) 中断是相对CPU而言的,因此例如IIC、定时器这些芯片内产生的中断也被称为外部中断,不能狭隘的理解为由芯片外的信号触发 EXTI被称为外
阅读全文
摘要:[TOC] STM32 OV2640将数据缓存至SRAM 流程设计 流程如下: 1. 初始化OV2640后,初始化DCMI和DMA,DCMI的初始化代码与原子开发板的代码一致,这里主要是区分在DMA的初始化上: RGB565是16个比特,2个字节,因此采用半字传输,总量为 ,存储器地址递增,初始化代
阅读全文
摘要:[TOC] STM32 .ld链接文件分析及一次bug解决过程 问题描述 原子板的代码中含有一个关于使用外部SRAM的功能,由于本人的开发板的SRAM只有512K,因此稍微修改了一下代码,同时使用GCC进行编译,但是这里却报错了,源码如下: 这里的 指的是4字节对齐,这是个MDK的用法,换到GCC只
阅读全文
摘要:浅谈嵌入式软件设计 本文在21IC的公众号文章《多年嵌入式编程工程师经验分享:换个角度来编程》基础上结合自己理解而写,部分图片以及文字说明均来自互联网。 前后台模型 模型介绍 当开发过程中不使用OS时,几乎所有的嵌入式程序归根结底都是一个由无法停止的循环为结构构成的,即常见的 或`for(;;)`,
阅读全文
摘要:[TOC] Makefile 直接附上Makefile的内容: makefile target TARGET = demo_project debug build? DEBUG = 1 optimization OPT = O1 Build path BUILD_DIR = Output sourc
阅读全文
摘要:[TOC] STM32 Win10下搭建嵌入式ARM开发环境 一个嵌入式应用的开发一般由如下几个环节构成: 创建工程,将中间件、应用代码、驱动代码添加至工程中 配置工程的编译选项,编译并连接,生成二进制目标码 将PC通过仿真器与开发板连接,将二进制目标码通过仿真器传输至芯片flash 测试并修改bu
阅读全文
摘要:[TOC] 浅谈MCU的DMA技术 DMA技术简介 DMA外设和存储器(或存储器和存储器)直接通过总线进行数据交换而不经过CPU的技术。在MCU中,DMA是一项十分重要的技术,它可以降低CPU的处理压力,提高外设数据的处理效率。 概念: 通道:DMA的通道表示一组外设对存储器的请求, 数据对齐:源和
阅读全文
摘要:[TOC] 微型计算机 理解微型计算机的工作原理才能更好的理解计算机、芯片、单片机等等的工作机理。本文从微机原理出发,整理相关知识并梳理,加深对计算机的理解。 基础电路 计算机由集成电路构成,可以说计算机是跑在芯片上的,芯片包括CPU芯片例如Intel生产的芯片,以及外设更多的单片机芯片如ARM等,
阅读全文
摘要:问题1 工作需要出bug的芯片不详细说明,该芯片的CPU含有32个中断源,一般来说,以stm32为例,中断向量表定义在 中,写为: 其中的 为中断服务函数,对中断服务函数进行实现后即可使用,我们开发芯片程序时常用的一种设计思路是这样的: 主程序中定义一个全局变量 用于记录是否有外部输入需要处理,打开
阅读全文
摘要:配置前首先要选择是否是外部输入时钟,在CubeMX中可以先在RCC中选择,包括选择是否输出时钟。 该图为CubeMX的时钟配置界面,SYSCLK即为系统时钟,HSI和HSE分别表示内部高速时钟和外部高速时钟,LSI和LSE表示低速内部时钟和低速外部时钟,图中标记可以看出: SYSCLK可以选择HSI
阅读全文
摘要:片内资源 开发板使用的STM32F407ZGT6在手册里是这样的: 片内FLASH:1M,片内RAM:192K,这两个跟程序运行和下载密切相关。 FLASH 地址分配如图,因此FLASH下载地址从0x8000 0000开始,大小为0x0010 0000(1M) RAM RAM的两段需要注意的是只有0
阅读全文
摘要:OV2640的引脚定义与正点原子的定义相同,这里主要说几个注意事项 硬件部分 关于SCCB OV2640或者是OV7670等等摄像头需要外部时钟送入,如果SCCB通信不通的话首先检查下时钟XCLK是否存在?如果时钟存在的话SCCB的设备ID是否填对?其他时序上的问题一般不大 关于供电 供电的VCC的
阅读全文