现在位置: 首页 > techbulo发表的所有文章
  • 12月
  • 03日
裸机开发 ⁄ 共 8408字 STM32启动文件详解<二>已关闭评论 ⁄ 阅读 2,052 次
boot_image 接《STM32启动文件详解<一>》 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化。ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。而Cortex-M3内核则正好相反,有3种情况: 1、 通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处; 2、 通过boot引脚设置......
阅读全文
  • 12月
  • 02日
裸机开发 ⁄ 共 2157字 STM32启动文件详解<一>已关闭评论 ⁄ 阅读 4,098 次
boot 在嵌入式应用程序开发过程里,由于使用C语言编程,基本很少涉及到机器底层寄存器的执行过程,一般都会直接在main函数里开始写代码,似乎main成为了理所当然的起点,尽管从C程序的角度来看程序都是直接从main函数开始执行。然而,MCU上电后,是如何寻找到并执行main函数这一问题却很自然的被忽略了!事实上微控制器是无法从硬件上去定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,因此main函数的入口地址在编译后便不一定是一个绝对地址。MCU上电后又是如何寻找到这个入口地......
阅读全文
  • 12月
  • 01日
技术文章 ⁄ 共 716字 汇编指令B、BL、BX、BLX 和 BXJ的区别已关闭评论 ⁄ 阅读 17,715 次
asm B、BL、BX、BLX 和 BXJ 跳转、带链接跳转、跳转并切换指令集、带链接跳转并切换指令集、跳转并转换到 Jazelle 状态。 语法 op1{cond}{.W} <wbr />label op2{cond} <wbr />Rm 其中: op1 是下列项之一: B 跳转。 BL 带链接跳转 BLX 带链接跳转并切换指令集。 op2 是下列项之一: BX 跳转并切换指令集。 BLX 带链接跳转并切换指令集。 BXJ 跳转并转换为 Jazelle 执行。 cond 是一个可选的条件代码。 cond 不能用于此指令的所有形式。 .W 是一个可选的指令宽度说明符,用于强制要求在 Thumb-2 中使用 32 ......
阅读全文
  • 11月
  • 30日
裸机开发 ⁄ 共 1872字 STM32F10x的存储器映射与复位已关闭评论 ⁄ 阅读 2,096 次
先来看两张图: CORTEX-M3内核的存储器映射 stm32实际系统映射 一、存储器映射 1、统一编址,程序存储器、数据存储器、外设寄存器组织在一个4GB的地址空间。 2、小端格式 3、映像(stm32f107,256KB产品) 存储器映像 可以看到,所谓的256KB闪存,是指主存储,片上FLASH如下图所示: 片上FLASH 介绍了片上的资源后,来看他们的地址映像。芯片将4GB的空间,划分为8个512MB的块(block),这些块有些是整块不用的,芯片对地址的安排可以参考数据手册,memory mapping章节中的那个图。只有block1、2、3、7是使用的。 地址中block7是核内......
阅读全文
  • 11月
  • 29日
常见问题 ⁄ 共 311字 error 65: access violation at 0x40021000 : no ‘read’ permission已关闭评论 ⁄ 阅读 3,455 次
error 使用MDK自己创建一个STM32F103VE核的项目 加入源码后编译,正常,在线仿真单步执行出现如下问题 error 65: access violation at 0x40021000 : no 'read' permission 网上有好多说法,但是我试过都不行 后来发现是Debug里面的设置有问题 主要是下面2项设置 Dialog DLL默认是DCM3.DLL Parameter默认是-pCM3 应改为 Dialog DLL默认是DARMSTM.DLL Parameter默认是-pSTM32F103VC 就正常了
阅读全文
  • 11月
  • 28日
技术文章 ⁄ 共 1092字 基础篇:防止重复包含头文件已关闭评论 ⁄ 阅读 1,748 次
头文件 假设,我们的工程中有如下三个文件 :a.h、b.h 和 c.cpp,其中 b 文件中包含了 a.h,c文件中又分别包含了 a.h 和 b.h 两个文件。在编译整个工程时,编译器会出现“multiple definition of”错误。 原因在于 a.h 文件被包含了两次。为了避免同一个文件被包含多次,C/C++ 中有两种处理方式,一种是 #ifndef方式,另一种是 #pragma once 方式。 方式 1: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 声明、定义语句 #endif 方式 2: #pragma once ... ... // 声明、定义语句 C/C++ 语言......
阅读全文
  • 11月
  • 27日
RTOS ⁄ 共 280字 UCOS-II在STM32上移植成功已关闭评论 ⁄ 阅读 1,650 次
ucos-ii 今天闲来无事,找点事做啊,记得以前看过一段时间的UCOS-II,正好手上有一块STM32的板子,就算温故一下知识吧,把UCOS-II移植到STM32上,经过N多错误之后,最后终于在STM32上跑起来了,创建了3个任务,每个任务都是点一个LED灯,运行正常,对于STM32移植UC0S-II,网上有很多教程的,移植起来也比较简单,有需要移植好的源码的,可以联系我,我的是STM32F103RE,不过都差不多了~~~~
阅读全文
  • 11月
  • 27日
裸机开发 ⁄ 共 1129字 STM32之DAC配置已关闭评论 ⁄ 阅读 2,435 次
stm32 STM32F103VCT6自带两个12位DAC,DAC的转换速度一直没有查到,网上有人说是1MHZ的频率,那就是1us了。ADC的转换时间在56MHZ工作频率下为1us,在72MHZ工作频率下为1.17us。如果AD和DA有对称关系的话,那么很可能跟ADC的时间相同,刚入手分析的,不见得正确!   由于我此次使用是DA输出电压。STM32的DAC固定电压配置和波形输出配置相似,不同的地方在于它要多调用一个函数:DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);这样才会输出固定的电平。 具体配置如下:  void DAC_VOLTAGE_Configuration(void) {       DAC_InitTypeDe......
阅读全文
  • 11月
  • 26日
技术文章 ⁄ 共 1333字 汇编语言debug的使用方法已关闭评论 ⁄ 阅读 1,897 次
debug 进入Windows操作系统,输入cmd回车 输入debug 回车,这样就进入了 debug模式 1: 输入 -r 查看或者修改寄存器,可以修改CS IP来指向要执行汇编的内存地址   -r 回车 查看  -r ax 回车 修改 ax的值  -r cs 回车  修改 cs的值  -r ip 回车 修改 ip的值 2: 输入-D 查看内存中的信息    -d 1000:0000 查看段地址为1000H ,偏移地址为0开始的内存信息   -d 1000:0000 00ff 就是查看 1000:0000 到1000:00ff的内存信息   查看主板生产日期 -d fff0:0000 00ff 可以看到右下角的 08/14/08 格式月/日/年, 08年8月14号生产的主板    这里......
阅读全文
  • 11月
  • 25日
应用开发 ⁄ 共 6801字 C语言可变参数函数的原理与实现已关闭评论 ⁄ 阅读 1,131 次
一、什么是可变参数 我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式: printf("%d",i); printf("%s",s); printf("the number is %d ,string is:%s", i, s); 以上这些东西已为大家所熟悉。但是究竟如何写可变参数的C函数以及这些可变参数的函数编译器是如何实现?本文就这个问题进行一些探讨,希望能对大家有些帮助. 二、printf......
阅读全文
  • 11月
  • 22日
软件下载 ⁄ 共 100字 DOS6.22.iso光盘映像下载已关闭评论 ⁄ 阅读 14,391 次
dos 本站统一解压密码:WWW.techbulo.Com 下载地址
阅读全文
  • 11月
  • 21日
应用开发 ⁄ 共 18358字 TI DVSDK初探 — 视频数据从哪里来到哪里去已关闭评论 ⁄ 阅读 2,571 次
本文讨论的是基于DVSDK3,硬件平台是ZMV6467。 DVSDK TI为达芬奇平台的开发者提供了一套完善的视频软件开发套件。DVSDK功能非常强大,它将很多视频编解码的细节都隐藏起来了,使用者只需要关系应用就可以,但是DVSDK的强大又使得它变得异常的庞大,让使用者摸不着头脑,或者根本不知道怎样开始开发。接下来的TI DVSDK学习记录文章将会一步步分析DVSDK,将我学习使用DVSDK进行开发的过程中碰到的问题或者相关的经验一一写出,文章如有错误敬请提出。 ZMV6467功能框图 DM6467支持BT.656/BT.1120/RAW的数据输入,最高可以支持1080P30FPS......
阅读全文
×