20年前坐在北京一个高校的教室里听老先生讲51单片机的课程。岁月荏苒,时过境迁,科技发展的潮流不可阻挡,技术的发展更是一日千里:“单片机”成了“嵌入式”,“51”等8位机完全被32位的ARM取代,编程语言经历了汇编、C、固件库,程序结构(所谓固件,firmware)从“裸跑”转变为嵌入式实时操作系统(RTOS,如uC/OS)。初学者一脸茫然:想掌握单片机,如何下手?
这是我的忠告:
1、实际的工作中、开发项目中,51单片机已很少用,PIC、AVR也在没落,ARM cortex-m 单片机(严格讲称为MCU)成为主流,尤其是ST公司的STM32系列,近5年在市场上取得绝对优势。刚刚诞生的STM32F030,号称售价30美分,将是传统8位单片机的终结者。
2、开发工具:使用“固件库”成为主流。固件库是厂家写好的一组C接口函数,是“标准化的”,开发者只需调用这些函数(即API)就能实现想要的功能。开发效率大大提高。熟练掌握C语言,成为嵌入式工程师的必备技能。这又成为初学者的拦路虎了。
3、调试工具:JTAG!这是业界标准,舍不得花60元RMB买个j-link做开发将是非常愚蠢的。51“仿真器”?这个东东是历史了,没用了。
4、STM32入门难!即使是PIC、AVR,也没那么简单!比如:最简单的IO口控制,如果没有事先正确设置IO口的传输方向,想点亮个LED也得折腾你一天!所以,先从51开始学起,然后过度到STM32,这是一个可行的选择!(貌似很多高校还在开51的课程吧?但51只能作为“课程”,如果认为以后就靠51吃饭了,可就大错特错了!)
5、初学者最关心的问题来了:买个什么样的开发板?我的答案是:无所谓的!尤其51开发板,真得别指着这个板子能带给你全部你想要的东西。板子唯一的作用是做实验。使用开发板的目的是学会编程、尤其是排错(debug)和调试方法,找到一个好教程、遇到一个好老师就很重要了。
最新型的无线血压计,配合安卓手机、苹果手机使用,内置STM32芯片:
关键字:单片机
引用地址:
想掌握单片机,如何下手?
推荐阅读最新更新时间:2024-03-16 13:56
单片机中无符号数运算出现的问题
在单片机编程中,我们经常会用到一些无符号数与有符号数的混合运算,另外我们所用的单片机很有可能是16位或者8位的,这样,编程时所用的一些变量的取值范围会对我们的 运算有所限制.比如说8位的单片机无符号数最大值为255,有符号最大数为127;16位单片机无符号数最大值为65535,有符号数最大值为32767.对于32的单片机来说,因为我们一般所处理的值很少能超过有符号数的最大取值,所以比较少遇到下面出现的问题. 在一些运算中,我们希望有些数能表示正负,这就得用有符号数,而有些数的取值会超过有符号数的最大值,这时我们就得用无符数来表示.下面是我编程时遇到的两个问题(用的是MC9S12XS128处理器,16位的单片机). 变量的声明如
[单片机]
MSP430单片机Timer_B和Timer_A的异同
Timer_B和Timer_A共同的特征 1 4种工作模式 2 具有可选,可配置的计数器输入时钟源 3 有多个独立可配置捕获/比较模块 4 有多个具有8种输出模式的可配置输出单元 5 DMA使能 6 中断功能强大,中断可能源自于计数器的溢出,也可能源自于各捕获/比较模块上发生的捕获事件或比较事件。 Timer_B与Timer_A不同之处 1 Timer_B计数长度为8位,10位,12位和16位可编程,而Timer_A的计数长度固定为16位。 2 lTimer_B中没有实现Timer_A中的SCCI寄存器位的功能。 3Timer_B在比较模式下的捕获/比较寄存器功能与Timer_A不同,增加了比较锁存器 4 有
[单片机]
基于51单片机的串口通信(PC发字符)
串口通信 选用芯片:AT89S52 函数功能:见如下代码。 /******************************************************************* 函数功能:PC机发送数据给单片机,每次发送3个字节(每字节为8位)的数据, 每个字节的内容为0~99无符号整数中的一个;单片机接收PC机串口发送过来的 这3个字节数据,并将它们依次以十进制方式显示在6位数码管中(每两个数码管 显示一个字节数据,例如发送数据为11,9,70,则数码管上显示11 09 70); 显示采用共阳极数码管,采用动态扫描显示方式。 作者:Crazy Wind 日期:2020.10.22 version:1
[单片机]
学STM32对你来说有什么好处
STM32是32位的单片机却只要八位单片机的价格,速度也是八位的好几倍。 更重要的是它作为ARM入门级的芯片比较容易掌握,网上资料也很多,很多人都在用。 STM32的IO端口有7个寄存器来控制,但是我们常用的就4个:CRL、CRH、IDR和ODR 。 端口配置低寄存器(GPIOx_CRL) 端口配置高寄存器(GPIOx_CRH) 端口输入数据寄存器(GPIOx_IDR) 端口输出数据寄存器(GPIOx_ODR) 其中CRL控制高8位的IO,CRH控制低8位的IO。这两个实质是一样的。 八种模式 对照A VR 来G PI Ox_CRL就相当于DDRx;GPIOx_ODR就相当于PORTx;GPIOx_ODR就相当于PIN
[单片机]
基于单片机与MXA2500GL传感器的振动信号分布式检测方法
引言 由于加速度传感器及电荷放大器的连接线缆的距离限制,采用集中的数据采集和处理系统在空间距离较远的场合很难实现,其可靠性和抗干扰问题很难解决。常采用分布式检测方法:即设置多个数据采集站点,每个站点采用一套单独的数据采集和处理系统,通过网络通信将各站点相互连结起来,然后由一台系统机进行集中数据处理,提取相关特征信息。 C8051F020单片机性能特点 CYGNAL的C8051F020是集成模拟、数字信号的混合信号系统级SOC(System On Chip)单片机,与目前常用的51系列单片机指令集完全兼容。采用100脚TQFP封装,体积小,运算速度快。它采用CYGNAL公司的专利CIP-5l微处理器内核。CIP-
[单片机]
51单片机C语言程序(五) 时钟程序(用定时器)
#include reg52.h #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit rs=P3^5; sbit lcden=P3^4; sbit s1=P3^0; sbit s2=P3^1; sbit s3=P3^2; sbit rd=P3^7; uchar count,s1num; char miao,shi,fen; uchar code table = 2009-7-13 MON ; uchar code table1 = 00:00:00 ; void delay(uint z) {
[单片机]
51单片机IO口模拟串口通讯3-中断法
硬件环境:STC89C52 软件环境:IDE Keil uVision V4.10 编译器 C51 V9.0 代码如下: /********************************************** 方法3:中断法 硬件:11.0592MHz晶振,STC89C52,RXD P1.0 TXD P1.1 波特率:9600 描述:所谓中断法是指根据模拟出的波特率,每1位持续的时间的长短是通过定时器计数 溢出产生中断来延时的。 测试1:上电发送1个0x03的字符 测试2:上电先发送1个0x03的字符,然后等待接收,将收到的字符再发送出去(分别一个一个发送0x01,0x02,0x03,0x04,0x0
[单片机]
芯原业界领先的嵌入式GPU IP赋能先楫高性能的HPM6800系列RISC-V MCU
先楫新一代的仪表显示产品具有高画质、低功耗等特点 2024年3月4日,中国上海—— 芯原股份今日宣布先楫半导体(简称“先楫”)的HPM6800系列新一代数字仪表显示及人机界面系统应用平台采用了芯原的高性能2.5D图形处理器(GPU)IP。 HPM6800系列产品基于RISC-V CPU内核,具备高算力、低功耗、高集成度和出色的多媒体功能,适用于汽车仪表、人机交互界面(HMI),以及电子后视镜(CMS)等需要复杂图形处理、高分辨率显示和高性能多媒体用户界面的应用。 芯原支持OpenVG的2.5D GPU IP能够为MCU/MPU设备提供高能效的图形处理和优质的图像输出,同时显著降低CPU负载。 凭借成熟的可扩展性,该GP
[嵌入式]