STM32CubeMX安装与应用

一、搭载stm32的开发环境即安装STM32CubeMX

1、安装jdk

由于STM32CubeMX是Java实现的,需要安装jdk环境.

下载地址:Java Downloads | Oracle

2、安装stm32CubeMX(安装过程中地址命名等不出现中文)

 STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics

二、利用CubeMX新建工程点亮LED灯

1、新建工程

 (1)新建工程,选择自己需要的型号

 (2) 调式sys接口

(3) 配置引脚,根据上一篇keil5配置引脚,只需要将PA1,PB0,PB5设置为GPIO_Out就行。

 

(4) 时钟源配置

默认时钟是使用内部RC振荡器。 

图示地方改为72回车。

(5)工程管理

所有命名中不要出现中文

左上角点击Code Generator ,进行下一步配置。

 右上角点击GENERATE CODE 创建工程,打开工程文件

 

2、新建代码

1、代码如下


	  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);
	  HAL_Delay(1000);

	  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);
	  HAL_Delay(1000);
	  
	  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
	  HAL_Delay(1000);

 在main.c文件的main函数下的while循环中,添加上方面几行代码即可。

2、编译烧录代码

编译运行没有报错就烧录代码。


3、结果展示

 三、MDK5 观察3个GPIO端口的输出波形

1、设置仿真模式

2、编译运行没有错误

3、调式会话

4、打开逻辑分析仪

5、点击setup给逻辑分析仪中添加要观察的IO口

 

新建输入PORTA.,PORTB.出来目标端口,并且设置Display Type为Bit

 

 

 仿真图如图所示:

 

四、 串口通信,发送Hello Windows示例

安装驱动软件,要将J-link连接在电脑上才可以安装上。

硬件连接参考led流水灯制作博客STM32F103C8T6点亮LED流水灯详解_小杨很勤奋的博客-CSDN博客

 

安装好了检查设备管理器是否有端口。

 

有端口之后可以参考上方STM32CubeMX代码编写,也可以直接编写。

编译运行没有错误之后烧录至芯片中。

代码参考如下:

usart.c下代码

在SYSTEM组下双击usart.c,uart_init函数

void uart_init(u32 pclk2,u32 bound)
{  	 
	float temp;
	u16 mantissa;
	u16 fraction;	   
	temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
	mantissa=temp;				 //得到整数部分
	fraction=(temp-mantissa)*16; //得到小数部分	 
    mantissa<<=4;
	mantissa+=fraction; 
	RCC->APB2ENR|=1<<2;   //使能PORTA口时钟  
	RCC->APB2ENR|=1<<14;  //使能串口时钟 
	GPIOA->CRH&=0XFFFFF00F;//IO状态设置
	GPIOA->CRH|=0X000008B0;//IO状态设置 
	RCC->APB2RSTR|=1<<14;   //复位串口1
	RCC->APB2RSTR&=~(1<<14);//停止复位	   	   
	//波特率设置
 	USART1->BRR=mantissa; // 波特率设置	 
	USART1->CR1|=0X200C;  //1位停止,无校验位.
#if EN_USART1_RX		  //如果使能了接收
	//使能接收中断 
	USART1->CR1|=1<<5;    //接收缓冲区非空中断使能	    	
	MY_NVIC_Init(3,3,USART1_IRQn,2);//组2,最低优先级 
#endif
}

 在test.c中编写如下代码:

#include "sys.h"
#include "usart.h"		
#include "delay.h"	 
int main(void)
{				 
	u16 t; u16 len; u16 times=0;
	Stm32_Clock_Init(9);	//系统时钟设置
	delay_init(72);	  		//延时初始化
	uart_init(72,115200); 	//串口初始化为115200
  	while(1)
	{
		if(USART_RX_STA&0x8000)
		{ 
			len=USART_RX_STA&0x3FFF;//得到此次接收到的数据长度
			printf("\r\n Hello Windows! \r\n\r\n");
			for(t=0;t<len;t++)
			{
				USART1->DR=USART_RX_BUF[t];
				while((USART1->SR&0X40)==0);//等待发送结束
			}
			printf("\r\n\r\n");//插入换行
			USART_RX_STA=0;
		}else
		{
			times++;
			if(times%200==0)printf("Hello Windows!\r\n"); 
			delay_ms(10); 
		}
	}	 
} 


 编译后成功烧录

 

 五、根据上方事例,观察PA9、PA10波形

 

 六、总结

 此次学会了利用STM32CubeMX直接生成代码,使得以后编译更加方便快捷。

七、参考

STM32最小核心板F103串口通信USART_vic_to_ry的博客-CSDN博客

 基于 MDK 创建 STM32 汇编程序:串口输出 Hello world_ssj925319的博客-CSDN博客

 【STM32】串口通信基本原理(超基础、详细版)_Yngz_Miao的博客-CSDN博客_串口通信原理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值