2. STM32学习 新建工程

本文介绍了STM32的三种开发方式,包括基于寄存器、标准库和HAL库,并详细讲述了使用Keil建立工程的步骤,以及如何通过配置寄存器和库函数来点亮PC13口的LED灯。同时,文章提到了不同开发方式的优缺点,如寄存器方式可能影响其他端口配置,而库函数则更方便。
摘要由CSDN通过智能技术生成
  1. 固件库

目前STM32的开发方式主要有基于寄存器的方式,基于标准库和基于HAL库的方式

库函数文件夹目录

2. 新建工程步骤

•建立工程文件夹,Keil中新建工程,选择型号

•工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹

•工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里

•工程选项,C/C++,IncludePaths内声明所有包含头文件的文件夹

•工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER

•工程选项,Debug,下拉列表选择对应调试器,Settings,FlashDownload里勾选Reset and Run

•建立工程文件夹,建立子文件夹,Keil中新建工程,选择型号STM32F103C8T6

•工程文件夹里建立Start、User、Library等文件夹,复制固件库里面的文件到工程文件夹

①start :存放启动文件

② User

③ Library:库函数文件

工程里对应建立Start、User、Library等同名称的分组,然后将文件夹内的文件添加到工程分组里

① Start

② User: main函数存放文件夹

③ Library

•工程选项,C/C++,IncludePaths内声明所有包含头文件的文件夹

•工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER

•工程选项,Debug,下拉列表选择对应调试器,Settings,FlashDownload里勾选Reset and Run

3.测试是否配置成功

配置成功

4. 点亮PC13口的IO测试灯

4.1 基于寄存器的开发方式(了解即可)

①首先使用RCC寄存器使能GPIO的时钟

GPIO都为APB2的外设

IOPC为1即可打开GPIOC的时钟,所以我们可以把这一位写1,其它项都给0.

将整个二进制数据换成16进制。4个一分组。

RCC->APB2ENR-=0x00000010;

② 配置PC13口的模式

GPIOC->CRH=0x00300000;

③ 给PC13口输出数据

由于PC13口时低电平点亮,所以GPIOC->ODR = 0x00002000;点亮,

GPIOC->ODR = 0x00000000;熄灭。

寄存器开发方式的缺点:除了PC13之外的位都配置成了0,这样会影响到其他端口的原有配置,如果要做到只配置PC13而不影响其他位,那还需要&=和|=的操作。

#include "stm32f10x.h"                  // Device header
int main(void)
{
    RCC->APB2ENR=0x00000010;
    GPIOC->CRH=0x00300000;
    GPIOC->ODR = 0x00002000;
    while(1)
    {
      
    }
}//注意最后一行必须为空格。否则会报警

4.2 利用库函数的操作方法点亮PC13口的灯

#include "stm32f10x.h"                  // Device header
int main(void)
{
    //调用库函数
    //使能时钟,APB2外设时钟控制
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
    //配置端口模式
    //配置结构体,命名为GPIO_InitStructure
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure .GPIO_Mode = GPIO_Mode_Out_PP;//通用推挽输出
    GPIO_InitStructure .GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure .GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOC,&GPIO_InitStructure);//第二个参数为指向结构体的指针
    //设置端口的高低电平
    GPIO_SetBits(GPIOC,GPIO_Pin_13);//将13号口置为高电平
    GPIO_ResetBits(GPIOC,GPIO_Pin_13);//将13号口置为低电平
    while(1)
    {
      
    }
}//注意最后一行必须为空格。否则会报警

5. 型号分类及缩写

6. 工程架构

首先进入start文件,进入中断服务函数,其中复位中断是整个程序的入口,当STM32上电复位后调用复位中断函数,再调用SystemInit和main函数。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值