摘要:
昨天收到同事转发的 dtrace 作者解释关于『为何 dtrace 在 x86 上能支持 function boundary trace,而 mips 不行』的一封邮件点燃了我的战斗激情,写了段程序分别在 mips,arm 和 x86 上编了下求证。本想就此写篇微信文章,但琢磨一下还是算了,一来昨天已有承诺,二来这东西放在微信上估计打开率为0。 前天有读者希望我多写点职场的建议,我深感惶恐。思... 阅读全文
摘要:
刚通过科目三的考试,写一点心得。希望对赤峰人民有点帮助。 阅读全文
摘要:
STM32F4Discovery开发帮使用的STM32F407VGT6芯片,内部FLASH有1M之多。平时写的代码,烧写完之后还有大量的剩余。有效利用这剩余的FLASH能存储不少数据。因此研究了一下STM32F4读写内部FLASH的一些操作。 【STM32F4 内部Flash的一些信息】 STM32F407VG的内部FLASH的地址是:0x08000000,大小是0x00100000。 写FLAS... 阅读全文
摘要:
说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置、芯片ID、自举程序等等。当然, FLASH还可以用来装数据。 FLASH分类 根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存储块用于存储程序,我们写的程序一般存储在这里。 信息块又分成两部分:系统存储器、选项字节。 系统存储器存储用于存放在系统... 阅读全文
摘要:
首先声明,手册上给出的FlashSize地址是错误的,正确的应该是0x1FFF7A20,取高16位。确切说应该是(0x1FFF7A23,0x1FFF7A22两个字节), 芯片的这96位ID是产品唯一身份标识。可以从特定的寄存器中读出来。FlashSize表示内部flash的大小,也是固化在芯片内部的。 手册上讲的ChipID的基地址是0x1FFF7A10,ChipSize的基地址也是0x1FFF7... 阅读全文
摘要:
我的STM32F4 Discovery上边有一个加速度传感器LIS302DL。在演示工程中,ST的工程师使用这个传感器做了个很令人羡慕的东西:解算开发板的姿态。当开发板倾斜时候,处于最上边的LED点亮,其他LED不亮。同时,用MicroUSB数据线将开发板连接电脑时,开发板就会虚拟成一个鼠标。倾斜开发板时,鼠标指针会向倾斜的方向移动。归根结底,就是牛B的ST工程师用加速度传感器完成了姿态解算。 在开发板上,加速度传感器使用了SPI方式用STM32F4芯片进行通信。STM32F4的SPI1 作为主机,与LIS302Dl进行通信,读取或者写入数据。由于我没有使用过STM32的SPI口,因此在板子. 阅读全文
摘要:
在使用串口的时候,串口的波特率是一个必须给定的参数。虽然书上说的很明确了,是一bit的时间。可我就是不放心,一直纳闷这个波特率到底是发送方波的频率还是发送一个字节所需要的时间。今天专门测试下,留作备案以免以后再疑惑。 实验方法:串口以各种波特率发送数据,用示波器查看并测量。 实验的硬件:STM32F4Discovery 的USART3 实验方法:将板子上的串口初始化之后,循环发送数据: whi... 阅读全文
摘要:
【这个,我真不知道该放到哪个板块了。按照惯例,放到C语言】 刚参加工作的时候,记得有一次开发一款产品,BOM里有一个电阻我用了500Ω的电阻。后来采购告诉我没有500Ω的电阻,只有510Ω的,当时就奇怪为什么这么个整数的电阻就没有呢?后来就只用一些常用的电阻,但是但是对哪些电阻值有哪些电阻值没有还是有点稀里糊涂的。最近公司事不多,就花点时间理了一下这个问题。 美国电子工业协会定义了一个标准电阻... 阅读全文
摘要:
板子依旧是英倍特的EK-SAM3S。ADC部分的原理图如下: PB1是一个复用引脚,在这里被用作AD功能,对应芯片上的AD5。即,使用片内ADC的5通道测VR1上2号引脚的电压。 实验采用了SysTick定时器产生中断方式来采集ADC数据。SysTick中断发生时,开启ADC转换。ADC转换结束时,产生中断,在ADC中断处理函数中读取ADC采集到的数据。转换后,通过UART输出,到PC端显示... 阅读全文
摘要:
为了调试LCD,在英倍特的板子上烧Atmel的sam3s-ek_demo_1.4_source示例代码.LCD显示正常了,却找不到LCD的驱动究竟在哪。 花了好久,追踪到了这个执行过程。 进入main函数--_SetupHardware()----DISP_Initialize() ----_aDISP_Backends[DISP_BACKEND_ILI9325]=&sDISP_Backend_I... 阅读全文
摘要:
FM/PCM的优点: 1 高可靠性和高抗干扰性。大家知道,一般PPM遥控设备都要求在操作时先开发射机后开接收机,先关接收机后关发射机。其原因是在没有发射信号时,接受机会因自身内部的噪音或外界的干扰产生误动作;即使是带静噪电路的接受机,在有同频干扰的情况下也会出现误动作。而采用了PCM编解码方式,在程序设计中包含了多种信号校验功能,即使在发射机关机、只开接收机的情况下,也不会产生误动作。因此,当每... 阅读全文
摘要:
先秀一张解剖照,放大裁剪,小米1S微距拍摄,800万像素摄像头很给力!今天等待被拆的是5个单片机芯片:(1)凌阳16位单片机SPCE061A ,这是我接触的第一个单片机,最高主频49MHz,32KB的FLASH,2KB的RAM,最大的特点就是集成了音频处功能,可以播放音频文件,带语音识别功能。(2)TI的16位低功耗单片机MSP430F149,非常好用的一款单片机,最高主频8MHz,指令为单周期,... 阅读全文
摘要:
SAM3S中的UART串口是一个两线异步收发器。这个串口能用来通信或者跟踪。有两个DMA通道与UART串口关联,可通过使用DMA处理串口传输以节省CPU时间。 SAM3S4C中有两个UART。与外设引脚的对应关系如下: 板子上使用的是UART0,及PA9和PA10引脚。 SAM3S的UART结构框图 串口初始化,收发数据 的步骤如下: 1、配置相应IO口的引脚(设置IO时钟及引脚工作模式) 2... 阅读全文
摘要:
在这个示例工程的main.c文件中,进入main之后,没有发现串口功能的任何配置。直接使用了printf这个东西进行输出。将软件下载到开发板上之后,在电脑端使用串口软件,可以看板子有数据发来。说明这个虽然没有显式初始化的串口,确实已经被初始化好了。 跟踪可发现,uart的功能函数都在uart_console.c文件中实现。但是这些功能到底是在那里加入到主程序里边的,在什么时候执行的,我却没找到。这... 阅读全文
摘要:
习惯了ST的库,猛然间看到ATMEL的库,有点无从下手。这几天参考这示例工程,终于建立了一个使用ATMEl库的工程。 软件库版本: 软件平台:MDK470A 硬件平台:英蓓特 EB-SAM3S MCU: AT91SAM3S4C 1、库的来源 库来自atmel的网站:http://www.atmel.com/tools/SAM3SSOFTWAREPACKAGE.aspx 我使用的工具链是MDK,下... 阅读全文
摘要:
英倍特开发板EM-SAM3S启动分析. 阅读全文
摘要:
折腾了几天AT91SAM3S,今天才算是把开发板上的3个LED点亮。 在点亮之前,起码看了百八十页的Datasheet,动用了N次百度。 各种时钟,看门狗,分散加载,中断向量,都得去整。这些都远远超过了一只LED。 以前使用别人的工程模板,倒是没觉得。最近这么一折腾,学问还真大! 折腾到最后,时钟的初始化还是用的例子里边的。 于是,面对一个新的MCU,我再也不敢说第一步是点灯了 MCU技术... 阅读全文
摘要:
图文详解将STM32标准库编译成lib文件,并在工程中使用。 阅读全文
摘要:
中断处理是一个比较有意思的东西。uTenux的中断处理包括了处理外部中断、CPU异常等。他是OS中任务无关部分。因此,当中断到来的时候OS会停止任务调度,不会发生任务切换。直到程序从中断中返回。 uTenux的中断处理部分API如下: 1、定义中断处理程序 ER ercd= tk_def_int(UINT dintno,T_DINT* pk_dint);这个函数定义一个中断定义编号为dt... 阅读全文
摘要:
1、系统时间管理系统时间管理函数用来对系统时间进行操作,是OS的一个基础性的东西。个人认为,设置系统时间和获取系统时间对OS来说基本是可有可无的。uTenux提供了三个系统时间相关API。分别用于设置系统时间、获取系统时间和获取系统工作时间。其中,前两个比较蛋疼。时间的表示是从1985年1月1日0:00:00(GMT)开始以ms为单位的累加。要想获得可读的时分秒,还得手动转换。我最讨厌这个转换了,所以不想细做这个实验。tk_get_otm获取的系统工作时间也是一ms表示的,只是这个数据比较直观,不需要再去转换了。【实验说明】我懒的去转换时间,本实验使用验证三个函数,用ms表示时间。首先设置系统 阅读全文