stm32单片机基础操作使用

一、单片机介绍

stm32系列单片机大差不差,小编将以stm32l431为例讲解一些基本操作,原理图如下:

(一)跑马灯操作

1.在单片机原理图找到led灯相应引脚(红灯:PC9;绿灯:PC6;蓝灯:PB2)

2.设置管脚模式:管脚PC9、PC6、PB2均设为GPIO_Output模式

3.配置led连接的相应cpu管脚,默认是高电平(灯灭)

4.配置时钟树

5.配置代码相关选项(Project Manager——>Code Generator)

6.生成代码

7.修改程序及编译

修改main.c文件中的while循环代码,添加的代码如下:

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET);//红灯亮
  HAL_Delay(500);//亮的时间500ms
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET);//红灯灭

  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET);
  HAL_Delay(500);
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);

  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
  HAL_Delay(500);
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);

烧录成功后将会看到红、绿、蓝三个LED灯交替闪烁

(二)代码优化

接下来将会运用C语言知识对代码进行优化,使代码更容易理解 

1.在图形化界面对led的每个GPIO管脚重新命名:这样RedLed、GreenLed、BlueLed均有了意义

2.生成代码,可在gpio.c中查看

3.led操作函数封装

        在gpio.c上面添加两个led控制函数的定义

void turn_led(int which,int status)
{
	GPIO_PinState level;
	level = (OFF==status)?GPIO_PIN_SET:GPIO_PIN_RESET;
	switch(which)
	{
	case RedLed:
		HAL_GPIO_WritePin(RedLed_GPIO_Port,RedLed_Pin,level);
		break;
	case GreenLed:
			HAL_GPIO_WritePin(GreenLed_GPIO_Port,GreenLed_Pin,level);
			break;
	case BlueLed:
			HAL_GPIO_WritePin(BlueLed_GPIO_Port,BlueLed_Pin,level);
			break;



	}
}
void blink_led(int which,uint32_t interval){
	turn_led(which,ON);
	HAL_Delay(interval);

	turn_led(which,OFF);
	HAL_Delay(interval);
}

4.头文件gpio.h添加led控制函数turn_led()和blink_led()的声明及相关枚举、宏定义;

enum/*枚举*/
{
	RedLed,
	GreenLed,
	BlueLed,
	LedMax,


};
#define OFF  0
#define ON   1


extern void turn_led(int which,int status);
extern void blink_led(int which,uint32_t interval);
//which表示要控制的灯:RedLed、GreenLed或BlueLed;interval指闪烁时间间隔,单位为毫秒

5.修改main.c中while循环代码,实现跑马灯功能

blink_led(BlueLed,500);
blink_led(RedLed,500);
blink_led(GreenLed,500);

以上为本期内容

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值