STM32
直播中

回头太晚

9年用户 811经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

如何去实现一种基于stm32的点灯设计

如何去实现一种基于STM32的点灯设计?怎样去编写其实验代码?

回帖(1)

江璐

2021-10-8 16:42:25
  基于IAR workbench
  下决心要学习stm32有一段时间了,从网上找到一些资源,我要自学网的黄老师很良心,理论性的知识讲的不多,干货和实操很给力。下面讲一下学习的过程。
  1、工程模板建立
  对于初学者来说,有些繁琐。因为人家有非常详细的教程,所以我不细讲,我就把我建立模板中的问题跟大家说说。首先,打开option选项的时候,光标一定要打到左侧workspace中你所建立的项目上,否则,出来的是另一种窗口;第二,包含文件路径的时候一定要把你所有用到的文件路径全部包含,而且各级树目录格式要正确,他视频里缺了一个 ,导致我调试了半天,才解决,毕竟新手,大家原谅。建好模板以后就直接用。
  2、代码编写
  点灯是每个单片机和嵌入式学习者必练的项目,思路也很简单,对于一般单片机就是要把引脚电平拉低,也有拉高的。但是32毕竟是工程级的微控制器,配置比较多,但是幸好有库,开始觉得很麻烦,用熟悉了之后感觉有的配置比51还简单,但是32有一系列时钟树和配置寄存器,这点比51复杂。回到正题。配置过程大概如下。首先查芯片手册,找出GPIO的时钟树,每个外设都有对应的时钟树,频率还不同。不同于51,只有一个时钟频率。这里要开启的是APB2总线的时钟,因为GPIO挂架在APB2总线上,然后是引脚的配置,stm32官方库已经定义好了GPIO的初始化结构体,自己定义一个结构体变量,查找固件库开发手册,然后进行赋值,再调用gpio初始化函数。主函数很简单,调用gpio初始化函数,然后再调用gpio复位函数,即可,这里电亮的是PB15。
  上代码
  端口初始化函数
  #include “led.h”
  void led_gpio_init(void)
  {
  GPIO_InitTypeDef GPIO_InitStructure;
  /*使能GPIOB的rcc时钟*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  /*配置GPIO引脚*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  /*初始化GPIO*/
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  }
  主函数
  #include “led.h”
  int main(void)
  {
  led_gpio_init();
  GPIO_SetBits(GPIOB,GPIO_Pin_15);
  return 0;
  }
  总结
  1、配置流程
  查找stm32f103手册的时钟树,找到需要开启gpio的时钟——APB2;
  定义gpio初始化结构体,查找stm32f10x固件库手册,按照要求赋值,选择开启的引脚,选择gpio工作模式,选择gpio工作频率。并调用gpio初始化函数;
  在主函数中调用gpio的置位(复位)函数。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分