Ardunio下的STM32串口通信
一、安装Ardunio IDE软件
双击arduino-1.8.12-windows.exe正常安装,一直按默认方式安装下去就行。
二、将打包文件中的Arduino_STM32整个文件夹拷贝到Arduino IDE安装目录下的hareware下
之后打开Arduion软件查看菜单栏\工具\开发板…就能看见STM32各系列的芯片了。
三、在Arduion中安装编译支持文件
菜单栏\工具\开发板…\第一栏的开发板管理器
输入ARM关键字搜索,选中Cortex-M3系列的编译支持文件并安装,安装过程可能需要几分钟,耐心等一会。待安装完成,退出开发板管理器。
四、安装STM32固件烧录软件
开发板: Genuic STM32F103Z series
Variant:STM32F103ZE
Upload mode:serial
CPUSpeed:72Mhz
Optimize:Smallest(default)
五、编写代码并编译
int flag=1;
char Stop[]="stop\n";
void setup() {
//初始化
pinMode(PB0, OUTPUT);//PB0为绿色,PB1为蓝色,PB5为红色,可根据需要改动
Serial.begin(115200);
}
void loop() {
int i=0,flag_s=0;
char inByte[50];
digitalWrite(PB0, HIGH); //小灯亮
delay(500); // 延迟
digitalWrite(PB0, LOW); //小灯灭
delay(500); // 延迟
while (Serial.available()> 0) //当发送缓冲区有数据时
{
inByte[i] = Serial.read(); //从串口的缓冲区取出并读取一个Byte的数据
delay(10);
i++ ;
}
if(Stop[i]=inByte[i])
{
if(Stop[i-1]==inByte[i-1]&&Stop[i-2]==inByte[i-2]&&Stop[i-3]==inByte[i-3])
{
flag=0;
Serial.println("收到!");
}//当收到stop命令时停止并回复收到
}
if(flag==1)
{
Serial.println("Hello World!");//向串口发送数据
delay(100); // 延迟
}
}
点击√编译:
显示编译完成,再点击√右边的箭头,程序烧录成功
在Arduino菜单栏\工具中打开串口监视器,看到不断打印的Hello World!说明环境已经配置好了,就可以按照Arduino模式开发STM32了。
开发板灯闪:
详细过程见:使用Arduino IDE开发STM32F10X
基于标准库函数与基于HAL库函数的stm32编程方式的差异
标准库都是基于寄存器的操作。寄存器版本使用较麻烦,每个设置都要去查看芯片datasheet,好处是可以让你熟悉芯片的寄存器配置。库函数是基于寄存器版本进行二次封装后推出的,它的优势就是寄存器版本的劣势,方便了使用,不再需要手动去配置寄存器,使用更方便了。但是它的劣势就是HAL的优势,就是每次修改MCU功能,都需要手动去修改功能,而且自己修改也不能保证正确性,程序代码在不同MCU之间的移植性不强。
HAL库,HAL是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层,HAL库工程一般使用Cube软件来生成工程。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,更方便的实现跨STM32产品的最大可移植性。优势就是不需要开发工程师再关注所用MCU型号,只需要专注所以要的功能软件开发工作。而且是未来主推的方向,正在不断的推出更新。HAL库推出的同时,也加入了很多第三方的中间件,有RTOS,USB,TCP / IP和图形等等。和标准库对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在STM32系列MCU之间无缝移植,甚至在其他MCU也能实现快速移植。
国人版的MCU集成开发平台 stduino IDE
stduino IDE官网:stduino IDE官网
Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。它页面简洁,操作简单,同时是国人开发,因此操作上手更快。