STM32F4学习(三)——初级例程

这篇博客介绍了STM32F4初学者如何操作GPIO控制LED闪烁,以及如何利用SysTick定时器实现精确延时。通过四个工程案例——LED控制、SysTick配置、按键扫描(polling和中断方式)详细讲解了基本的嵌入式开发技巧。文章强调了中断服务函数中清除中断标志位的重要性,并鼓励读者继续深入学习嵌入式系统。
摘要由CSDN通过智能技术生成

上一篇是利用库创建工程模板,下面我们就可以书写自己的程序了。

在初级例程中,我给自己创建了四个工程,分别是LED(对GPIO的操作)、SysTick(系统滴答定时器)、KEY(扫描的方式和中断方式)。如图:

其实,我们可以把前两个工程合并成一个,利用SysTick产生精确的系统延时来使LED闪烁。下面的程序就是初始化LED的GPIO,

void LED_GPIO_Init(void)
{
 /* 定义一个GPIO_InitStructure类型的结构体 */
  GPIO_InitTypeDef  GPIO_InitStructure;
  
  /* 开启GPIOD的外设时钟 */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

  /* 选择要控制的GPIOD的引脚 */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;
 
 /* 设置引脚模式为推挽输出 */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
 
 /* 设置引脚的输出类型的枚举 */
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
 
 /* 设置引脚的类型为上拉 */
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
 
 /* 设置引脚的输出速率为50MHz */
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 
 /* 调用库函数,初始化GPIOD */
  GPIO_Init(GPIOD, &GPIO_InitStructure);
}


初始化完成之后,LED的GPIO是设置完成了,接下来我们就可以操作LED的亮灭了,我们用到下面两个函数

void STM_EVAL_LEDOn(Led_TypeDef Led)
{

  /* Turn on LED */
    GPIO_PORT[Led]->BSRRL = GPIO_PIN[Led];
}

void STM_EVAL_LEDOff(Led_TypeDef Led)
{
  /* Turn off LED */

    GPIO_PORT[Led]->BSRRH = GPIO_PIN[Led];
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值