这里虽说是介绍常见的单片机,实际上也只是简单的描述下我曾经在项目中使用过的单片机。
PIC单片机,英文全称为Peripheral Interface Controller,翻译过来应该是物理接口控制器。顾名思义,我们使用它主要是通过这些物理接口来完成对其他设备的控制。
开发环境安装
PIC:
https://www.microchip.com/mplab/compilers
https://www.microchip.com/mplab/mplab-x-ide
在使用XC2.0版本时,会报下面的错误。
error: variable has incomplete type ‘void’
error: expected ‘;’ after top level declarator。
需要将
void interrupt ISR(void)
修改为
void __interrupt (high_priority) ISR(void)
STM32:
https://www.st.com/content/st_com/en/search.html#q=cubeMX-t=tools-page=1
https://www.st.com/content/st_com/en/search.html#q=truestudio-t=tools-page=1 (好像官网上说不推荐这个用于最新的设计了)
https://developer.arm.com/tools-and-software/embedded/keil-mdk
keil的库如果无法在线更新的话,可以考虑在这个网页上找到相对应的安装文件,下载安装:
https://www.keil.com/dd2/pack/#/eula-container
编码风格
PIC单片机使用MPLAB创建工程,在创建工程的时候选择要编程的设备。之后就需要根据手册进行代码的编写工作。在这个过程中,全部的代码框架都需要自己来定义,我们要定义时钟,管脚功能等等所有的工作。
STM32使用CubeMX这个简单易用的图形化工具,所有的配置都可以在图形界面上进行选择,并且可以生成整个工程的代码框架。大大缩短了开发周期降低了开发难度。
选型要求
PIC主频低,管脚少,功能弱,所以一般会用来进行一些简单场景的控制。STM32有丰富的管脚,以及丰富的产品形态,主频高,适合用于一些较为复杂的控制场景。
应用场景
我自己做过的项目,一般用来进行管脚控制,主要是通过管脚控制来完成对其他芯片上下电的操作。通过ADC采集电流电压值,通过I2C进行交互通信。
STM32 比较灵活,既可以作为MASTER和又可以作为SLAVE存在。并且一般都可以支持3组I2C。
使用CubeMX,还可以选择freeRTOS系统,可以方便的用于更复杂的场景中。