目录
一 、安装 Arduino IDE 和相关软件支持库
任务要求:在Ardunio 完成STM32板子的串口通信程序:
1)持续向串口输出“Hello world!”;
2)当接收到“stop!”时,停止输出。
提取码:q251
Arduino IDE
所用的核心板为野火STM32F103指南者
1.安装步骤
(1)点击这个进行安装
点开后一直点下一步即可
安装驱动
(2)将原先的文件中的Arduino_STM32整个文件夹拷贝到安装目录下的hareware里
(3)在Arduion中安装编译支持文件
点开工具、开发板、开发板管理器然后搜索ARM点击第一个安装
(4)安装串口烧录软件
安装即可
如图所示连接USB 转串口并用短路帽让BOOT0接入高电平1,BOOT1接入低电平0
打开烧录文件设置好你的端口
点击next后
安装完成
2.代码测试
按下面步骤调好设置
将以下代码编译烧录
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); // 延迟
}
}
3.调试结果
crtl+shift+M打开串口监视器
二、分析基于标准库函数与基于HAL库函数的stm32编程方式的差异。
ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL库、LL库 三种。其中标准库与HAL库最常用,LL库只是最近新添加的。
标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的ST库,几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。
HAL库与新增的LL库,都是ST公司提供的新标准库,包含在ST为新的标准库注册了一个新商标:STMCube™当中。LL库和HAL库两者相互独立,只不过LL库更底层。而且,部分HAL库会调用LL库(例如:USB驱动)。同样,LL库也会调用HAL库。
可以说HAL库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如F7系列。现在,ST主推HAL库,目前,HAL库已经支持STM32全线产品。
比较:
新芯片现在只推出HAL库,HAL库与标准库比较,所用的API函数不一样,两者也相互独立,优势在于可以用cubeMX生成代码。(ST专门为其开发了配套的桌面软件STMCubeMX,开发者可以直接使用该软件进行可视化配置,大大节省开发时间。)
转载自STM32标准库与HAL库总结
三、试玩stduino IDE
stduino IDE十分简洁,使用起来十分简单 ,中英文可以自由切换, 一键USB\Stlink下载 ,支持串口调试助手功能俱全十分方便。
在有了Keil、Ardunio,觉得是否还有必要“再造车轮”
我认为还是有必要的,因为不同的软件有不同的功能适用的人群也不一样,相对于Keil、Ardunio软件stduino IDE确实起步较晚,但是stduino IDE毕竟是国人版的MCU集成开发平台对于我们来说还是方便许多的stduino ID还是存在许多问题的,我认为随着往后的开发和探索一定会越做越好的。