Ardunio的stm32f103指南者串口通信
日期: 2020-12-13 分类: 跨站数据测试 546次阅读
Ardunio 下的stm32f103指南者串口通信
1.用Ardunio IDE完成stm32f103指南者的串口通信。
①安装Ardunio IDE
下载解压安装Ardunio,一直默认安装就可以,选择路径不要有中文。
②配置Ardunio IDE
将打包文件中的Arduino_STM32整个文件夹拷贝到Arduino安装目录下的hareware下。
按照步骤安装完成后,在菜单栏\工具\开发板选择芯片类型,寝室里使用的是stm32f103指南者,所以选择为Generic STM32F103V series,然后Variant,Upload method,CPU Speed,Optimize这几个的选择如下
③连接stm32f103指南者开发板
直接用usb线把开发板与电脑相连。
④烧录程序(stm32f103指南者)
通过代码完成:
持续向串口输出“Hello world!”;
当接收到“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); // 延迟
}
}
选择连接的串口。
然后依次点击验证,烧录。
然后小灯开始闪烁,串口收到的信息点击串口监视器及可看到
2.基于标准库函数与基于HAL库函数的stm32编程方式的差。
对于标准库,STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式。
HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴。
3.stduino IDE使用体会
用起来比较简单,学起来相对来说容易操作和理解。而且开发很高效便捷。
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐