Ardunio和HAL库函数编程
一、安装 Ardunio IDE 和相关软件支持库,在Ardunio 完成STM32板子的串口通信程序
Ardunio IDE安装包:https://pan.baidu.com/share/init?surl=kqpP1YGKtY2WRz9GNT0Z7w
提取码:q251
I agree
Next
安装
将Arduino_STM32复制到Arduino–hareware文件下
打开Arduino,依次勾选
工具
开发板“Generic STM32F103v series”
开发板管理器…
之后在搜索栏中输入ARM
选择Arduino ARM Boards(32-bits ARM Cortex)进行安装
输入ARM搜素
选择(Cortex-M3)进行安装
依次选择:
工具
开发板"Generic STM32F103V series"
Generic STM32F103V series
Variant: “STM32F103VE”
Upload method: “Serial”
CPU Speed(MHz): “72Mhz (Normal)”
Optimize: “Smallest (default)”
将开发板用usb线与电脑接口相连
此时即可在Ardunio 完成STM32板子的串口通信程序:
1)持续向串口输出“Hello world!”;
2)当接收到“stop!”时,停止输出。
程序代码如下:
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); // 延迟
}
}
在工具栏中选择链接串口
点击验证、上传
点击工具栏中的串口监视器,观察小灯闪烁
方框输入“stop”即可停止
小灯闪烁情况如下:
二、基于标准库函数与基于HAL库函数的stm32编程方式的差异
标准库和HAL库的对比,在标准库中,初始化函数内部先对GPIO进行了初始化,然后再对串口的停止位,引脚等进行配置,好处就是每个增加的部分都是互相独立得,代码可拓展性更强一些,坏处就是逻辑结构不是很明确。
在HAL库中直接对串口进行了配置,并且在串口初始化错误的时候会死循环这对于嵌入式开发来说是很重要的,因为芯片不同于操作系统,芯片不能把每个错误都以人类看得懂的方式显示出来哦~所以死循环可以在Debug的时候帮助我们快速定位问题。但是在HAL库中在哪里初始化串口GPIO口的配置,仔细一看,原来HAL库里面有SystemClock_Config();对各个部分所需要的时钟线都进行了配置并且做了封装,使得代码的逻辑性更加好了,但是如果要新增加模块,就很有可能出现问题。
三、stduino IDE (http://www.stduino.com/pindex.php)体会
Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。
Stduino IDE跟Ardunio比较类似,尤其是在代码编写上风格基本一致。但是,两者在界面上却存在比较大的差别,Ardunio更加简单,没有过多的渲染,而Stduino就比较丰富,界面上做的更加精美。总的来说,其实两者在使用上是没有什么差别的。与keil相比来说,这个开发工具跟Ardunio一样,对于那些对keil操作不太熟练的人来说,这个开发工具的操作方式更加简单,更加容易上手。每种工具的出现,都是在一些软件的基础之上加以改进了。就像Stduino跟Ardunio很类似,但是,在界面方面却做更加精美,对于一些使用者来说,可能更具吸引力。