写在开头的话:
最近心血来潮,打算重新捡起老本行,结果发现很多都忘记了。干脆重新开始学习,并做个从零开始的笔记了。
stm32系列mcu
stm32系列芯片包括f0/f1/f2/f3/f4/f7/l0/l1/l4/h7等系列芯片芯片。不同系列的芯片适用于不同的应用场景。f0/l0基于arm cortex®-m0,f1/f2/l1系列基于arm cortex®-m3,f3/f4/l4系列基于arm cortex®-m4,f7/h7基于arm cortex®-m7。l系列表示超低功耗,h表示超高性能(对应就是高功耗了),f就是个折中方案了,性能不错,功耗也不高。
其他的先不管,f1系列芯片主要分类如下:
·超值型stm32f100 - 24 mhz cpu,具有电机控制和cec功能
·基本型stm32f101 - 36 mhz cpu,具有高达1mb的flash
·连接型stm32f102 – 48 mhz cpu具备usb fs device接口
·增强型stm32f103 - 72 mhz cpu,具有高达1mb的flash、电机控制、usb和can
·互联型stm32f105/107 - 72 mhz cpu,具有以太网mac、can和usb 2.0 otg
stm32型号的说明:以stm32f103rbt6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:
具体信息可查阅网站https://www.stmcu.com.cn/。
rtt操作系统
官网的简介:
rt-thread是一款来自中国的开源嵌入式实时操作系统,由国内一些专业开发人员从2006年开始开发、维护,除了类似freertos和ucos的实时操作系统内核外,也包括一系列应用组件和驱动框架,如tcp/ip协议栈,虚拟文件系统,posix接口,图形用户界面,freemodbus主从协议栈,can框架,动态模块等,因为系统稳定,功能丰富的特性被广泛用于新能源,电网,风机等高可靠性行业和设备上,已经被验证是一款高可靠的实时操作系统。rt-thread实时操作系统遵循gplv2+许可证,实时操作系统内核及所有开源组件可以免费在商业产品中使用,不需要公布应用源码,没有任何潜在商业风险。
rt-thread操作系统源码风格与linux一致,在官方提供的源码中,包含有诸多芯片的工程示例,lpc系列和stm32f系列的很多。再者rt-thread代码开源,又有那么详细的资料,如果遇到官方bsp下没有的芯片,对于动手能力强的同学,自己动手移植也比较方便。而且官方提供了详细的中文文档,对于英语不太好的同学简直就是一个福音。而且,rt-thread提供了丰富的组件,使用者可以非常方便的实现诸如gui、网络协议栈、modbus甚至是sqlite数据库等功能。后续使用的时候再细细体会它的强大之处了。
写寄存器or利用固件库
嵌入式的编程,往下说就是操作mcu的寄存器。而固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(api)。相对于固件库的方式,直接写寄存器的代码更为简洁,只需要对指定的寄存器进行需要的操作就可以了,但是对于stm32来说,寄存器多达数百个,记起来也是一件非常让人头疼的事情。st推出了官方固件库,固件库将这些寄存器底层操作都封装起来,提供一整套接口,你不需要去知道操作的是哪个寄存器,你只需要知道调用哪些函数即可。关于写寄存器还是利用固件库去开发哪个好,一直都有争议,只能说存在即为合理,各有各的好处,我个人比较懒,不太喜欢去记那些寄存器都是啥。再者,我也不是专门搞stm32的,要是用写寄存器的方式开发的话,过一段时间不弄,再回来估计又得花些时间对着文档看了。所以在后续的博客,我也都会利用固件库开发。当然,用不用是一回事儿,根据官网技术文档,操作寄存器的方式是必须要会的。个人建议,还是需要学会看硬件文档,看官方的技术资料,而不是遇到问题就百度。学会看官方的技术文档后,遇到问题解决起来将会事半功倍。
点亮led
点亮led,首先自然是安装keil了。当然,使用其他工具也可以,对于我来说,我还是比较钟情于keil。我现在使用的是keil5,编译工具链为mdk-arm v5.24。开发板为淘宝上找的便宜的不能再便宜的一块stm32c8t6开发板,引脚都要自己焊。下载线为st-link v2。根据淘宝商提供的硬件资料,这个板子pb12连接了一个led灯,led另外一端连接了上拉电阻,即led在pb12低电平时点亮。
废话不说了,keil的安装和破解,网上多的是,随便找个教程,走一走就完了。
第一步,创建工程
打开keil后,首先需要创建个工程。点击project->new μvision project。
填写工程名
选择芯片,如果没有你要的芯片,就需要到官网上去下载,然后安装。
选择需要用到的功能,core、startup和gpio,可以看到下面有警告,gpio依赖framework和rcc,也要去勾选上就好了。
然后确定,工程就创建成功了。
第二步,增加main.c文件到工程中
点击如下按钮,创建一个新文件,并保存文件到工程目录中。
点击工程管理按钮,管理工程
点击add files 把main.c加入到source group 1下,target 1和source group 1都可以修改,改成一个合适的名字。
第三部,编写main.c 文件
#includestm32f10x.h
时隔五年,ABB发布新一代协作机器人
北京 4月21日-22日《产品EMC正向设计与分析》公开课火热报名中!
基于APIC时钟的嵌入式Linux内核实时化研究
联邦快递从发往中国的邮包中查出枪支,必须调查清楚!
中国“爬山”火车来了 搭载北斗 5G 物联网自动驾驶技术
STM32系列MCU,写寄存器Or利用固件库
哭晕!iOS 11曝光:苹果强逼你换iPhone 8
披着“共享”外衣的共享雨伞一伞难匿 共享经济前景将如何
浅析Vesper发布首款模拟输出的压电MEMS语音加速计
特斯拉新政:新车将不再提供充电线
Linux系统LPT打印口批量产测工具
光纤灯原理_光纤灯的优点
EEPROM存储器外设及驱动代码应用设计
华为推出“1+8+N”的总体战略规划
“2020华为生态合作伙伴走进和林格尔新区”活动成功举行
生物识别技术对金融行业有什么作用
360电话手表8xs怎么样?360 8XS评测拆解 发现一颗多模4G芯片
广电申请5G牌照入局移动通信市场 这事儿靠谱么?
半导体设备国产化迎黄金浪潮,封测设备赛道也“钱途”无量
应用笔记140 第1/3部分:线性调节器和开关模式电源的基本概念