从大一开始接触到单片机(MCU),一直都觉得挺好玩的。从8位的51单片机到16位的TI MSP系列的单片机都尝试学过。感觉还不错,不过,以前一直都觉得32位的ARM处理器距离自己很遥远。幸运的是,如今我确实有机会接触一款32位的处理器了。当然使用的是Cortext M4内核,TI Stell...
分类:
编程语言 时间:
2015-07-19 21:28:06
阅读次数:
264
通过*.m51文件我们可以清楚的看到单片机存储器的使用情况,以及可以看到每个变量包括局部变量的位置。
之前碰到一个问题,同样的程序,在small模式下编译后运行没问题,但在large模式下可以编译,但是运行出错。最后查看m51文件,发现了问题,在一个对时序要求很严格的地方声明几个局部变量,这几个局部变量有的被分配到data中,有的分配到xdata,在xdata中的变量访问时间要大于data中,导...
分类:
其他好文 时间:
2015-07-18 00:35:32
阅读次数:
267
一.单片机三大资源1.Flash—-程序存储空间
相当于计算机的硬盘,可实现断电后数据不丢失。
2.RAM—-数据存储空间
相当于计算机的内存,用来存储程序运行过程中产生和需要的数据,断电后数据丢失,优点是读取速度快,可无限次写入。
3.SFR—-特殊功能寄存器
单片机每个功能都对应一个 多个SFR,用户通过对SFR的读写来实现单片机的功能。 二.单片机的最小系统1.电源
主流单片机采用5V和3.3...
分类:
其他好文 时间:
2015-07-16 19:54:24
阅读次数:
110
与串口1中断相关的寄存器有IE、IPH和IP串口中断允许位ES位于中断允许寄存器IE中。EA:CPU的总中断允许控制位,EA=1,CPU开总中断;EA=0,CPU关总中断。各中断源首先受EA控制,其次还受各中断源自己的中断允许控制位控制。与串口2中断相关的寄存器IE2、IP2H和IP2串口2中断允许...
分类:
其他好文 时间:
2015-07-16 16:04:41
阅读次数:
126
本文主要解决两个问题
1 STM32的IO口要反转,怎么实现?
2 嘀嗒定时器systick的配置
解答1:
单片机的口,反转很容易。sbit led = P1 ^6; led = ~led;而STM32的口要让它反转,怎样实现呢?
很容易,对想要反转的IO口取异或: GPIOx->ODR ^= GPIO_Pin;
解答2:
#include "...
分类:
其他好文 时间:
2015-07-14 13:43:15
阅读次数:
665
单片机就是片上计算机,广义的计算机可以理解为CPU+内存,那么单片机就是把CPU和内存封装在一块的芯片。它不同于我们习惯上认识的计算机,由于不带外设和封装性,它已经高度电子元器件化。 电子元器件,通俗的讲就是电路板上密密麻麻带有管脚的各种原件,电子原件通过贴片或直插的方式固定在电路板上。原件的...
分类:
其他好文 时间:
2015-07-13 00:39:49
阅读次数:
183
最近帮同学做一个项目,开发板是EFM8单片机,支持SPI和I2C协议(SMBus)。很久没搞过单片机了,而且条件限制,为了使单片机和外设成功通信,花了一个星期时间。刚开始使用SPI,发现代码逻辑都没问题,就是结果不对(后来知道是因为带中断的程序单步调试导致的,说多了都是泪),调了几天发现SPI确实调不通,就换了I2C,半天时间搞定,哈哈。本文重点解释I2C,废话少说了。
1、简介
I2C(In...
分类:
其他好文 时间:
2015-07-12 12:45:57
阅读次数:
158
一入硬件深似海!
以前是写单片机程序和Linux驱动的,主要是C语言,对硬件也是稍有了解,但大多数都停留在单片机的DIP时代!
现在在做一个智能家居的项目,硬件软件都要来,上的是Android。驱动已经被老大弄的差不多了,很多驱动原厂都给了,改改
配置就行,也没太大难度。现在只好硬着头皮整硬件了。
一直以为模拟电路是一个坑,说是坑是因为它难!一开始修电路,就要焊接0402的电感电容电阻,还...
分类:
其他好文 时间:
2015-07-11 16:48:28
阅读次数:
177
单片机简单内存管理器
本代码基于无操作系统的STM32单片机开发,功能强大,可申请到地址空间连续的不同大小的内存空间,且用户接口简单,使用方便
memory.h
#ifndef __MEMORY_H__
#define __MEMORY_H__
#include "stdio.h"
#include "string.h"
#include "includes.h"
//用户使用
t...
分类:
其他好文 时间:
2015-07-10 20:53:00
阅读次数:
152
1 问题??在下面的测试程序中,如果将Init_CLK()函数中的 CLK_CKDIVR |= 0x08;去掉’|‘,则TIM1的功能实现跟预设定相同(10ms中断一次),但是TIM2的PWM频率就变高了;如果加上,则TIM2的功能实现跟预设定相同(产生1Hz的PWM),但是TIM1的周期就变长了;
??尝试了很多测试,均无效(买的开发板和另一块gs自画板测试也都一样)。2 尝试??因为STM8S...
分类:
其他好文 时间:
2015-07-08 14:43:49
阅读次数:
708