基于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的置位(复位)函数。
基于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的置位(复位)函数。
举报