文章目录

  • 安装 Arduino IDE
  • 烧录程序
  • 基于标准库函数与基于HAL库函数的stm32编程方式的差异
  • Stduino IDE 与Ardunio IDE的比较



板子为stm32指南者开发板

安装 Arduino IDE

从网上下载安装包

stm32 裸机 freemodbus xMBPortEventInit_#define

配置

将复制的文件拷贝到arduino的安装路径下hardware中

stm32 裸机 freemodbus xMBPortEventInit_引脚_02


接入开发板,开发板的连接如下:

stm32 裸机 freemodbus xMBPortEventInit_开发板_03

打开arduino,此时里面已经有了stm32指南者开发板了,选择Generic STM32F103V series,打开开发板管理器

stm32 裸机 freemodbus xMBPortEventInit_引脚_04


stm32 裸机 freemodbus xMBPortEventInit_开发板_05


配置好后细节如下:

stm32 裸机 freemodbus xMBPortEventInit_#define_06

烧录程序

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); // 延迟
}
}

在左上角工具栏选择相应的端口,然后依次点击左上方的验证,上传。(注意每一次烧录文件前一定要按开发板上的RESET按钮)

stm32 裸机 freemodbus xMBPortEventInit_引脚_07


stm32 裸机 freemodbus xMBPortEventInit_引脚_08


上传成功后,开发板灯亮

stm32 裸机 freemodbus xMBPortEventInit_引脚_09

打开工具中的串口监视器可观察运行效果(波特率设为115200)

stm32 裸机 freemodbus xMBPortEventInit_引脚_10

基于标准库函数与基于HAL库函数的stm32编程方式的差异

基于寄存器会对寄存器进行一堆定义

#define GPIOC_CRL *(unsigned int*)(GPIOC_BASE+0x00)
#define GPIOC_CRH *(unsigned int*)(GPIOC_BASE+0x04)
#define GPIOC_IDR *(unsigned int*)(GPIOC_BASE+0x08)
#define GPIOC_ODR *(unsigned int*)(GPIOC_BASE+0x0C)
#define GPIOC_BSRR *(unsigned int*)(GPIOC_BASE+0x10)
#define GPIOC_BRR *(unsigned int*)(GPIOC_BASE+0x14)
#define GPIOC_LCKR *(unsigned int*)(GPIOC_BASE+0x18)

基于固件库则会对函数进行设定

void LED_GPIO_Config(void)
{		
		/*定义一个GPIO_InitTypeDef类型的结构体*/
		GPIO_InitTypeDef GPIO_InitStructure;

		/*开启LED相关的GPIO外设时钟*/
		RCC_APB2PeriphClockCmd( LED1_GPIO_CLK | LED2_GPIO_CLK , ENABLE);
		/*选择要控制的GPIO引脚*/
		GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;	

		/*设置引脚模式为通用推挽输出*/
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   

		/*设置引脚速率为50MHz */   
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

		/*调用库函数,初始化GPIO*/
		GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);	
		
		/*选择要控制的GPIO引脚*/
		GPIO_InitStructure.GPIO_Pin = LED2_GPIO_PIN;

		/*调用库函数,初始化GPIO*/
		GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);		

		/* 关闭所有led灯	*/
		GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
		
		/* 关闭所有led灯	*/
		GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_PIN);
}

对比发现基于寄存器的编程方式开发效率低,成本较大,但它的参数更加直观

Stduino IDE 与Ardunio IDE的比较

进入网站下载stduino,下载后如下:

stm32 裸机 freemodbus xMBPortEventInit_引脚_11


stduino界面介绍:

stm32 裸机 freemodbus xMBPortEventInit_引脚_12


与arduino相比较,stduino更容易掌握,同时有着足够的灵活性。不需要太多的单片机基础、编程基础,简单学习后,可以快速的进行开发,自带程序烧录,自带串口调试,软件界面简洁。stduino IDE可以在Windows、Macintosh OS X、Linux三大主流操作系统上运行。