嵌入式即嵌入式系统,IEEE(美国电气和电子工程师协会)对其定义是用于控制、监视或者辅助操作机器和设备的装置,是一种专用的计算机系统;国内普遍认同的嵌入式系统定义是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统;从应用对象上加以定义来说,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
其中软硬件可剪裁说明,可以对硬件进行编程,也可以对软件进行编程。
其中对硬件进行编程就是EDA技术,学习中常用对FPGA芯片的开发为示例。用VHDL语言或者Verilog语言实现对硬件的编程。但是由于其涉及到很多基础和高深的电路知识,想到于研发一款芯片,要想实现应用的话,难度还是很大的,对基础的要求也相对较高。
还有就是对软件进行编程,比较普遍用于学习的就是51以及stm32芯片。51的功能相对简单,而且比较易懂好上手,非常适合作为新手小白的单片机启蒙来学习。在一些简单的模块,用51来展示现象会更简单,编程会更简单。stm32更适合有一些基础的人去学习和应用,学习stm32对我们了解电路、寄存器原理等会更有帮助。
下面是用keil5写的、stm32蜂鸣器提示的简单代码:
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
while (1)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_12);
Delay_ms(100);
GPIO_SetBits(GPIOB, GPIO_Pin_12);
Delay_ms(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_12);
Delay_ms(100);
GPIO_SetBits(GPIOB, GPIO_Pin_12);
Delay_ms(700);
}
}
stm32和51相比,会再复杂一点,需要有很多的.c.h文件来保证程序可以正常运行。还需要配置参数,引脚等。同时,学习32时,趣味性会更强,而且32的功能更强大,我们可以做更多有用的东西。
学习单片机也需要注意,对一些基础功能的实现,要理解代码,不能ctrlCV走天下。打好地基才能盖好高楼,在学习中解惑、在学习中进步。用心学习加上动手操作,但是最重要的还是思考和总结,多留一些时间去思考,这样我们才能走得更稳、跟远。希望大家能在嵌入式的学习中共同进步。