02 新建工程、配置寄存器、工程模板

新建工程

新建工程基本步骤

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

• 工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹(文件较多,建立文件夹便于方便管理)——为添加工程文件准备

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

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

• 工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER——使用库函数的条件编译

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

也可以建立一个属于自己风格的工程,只要能通过编译,工程就基本没有问题。

工程架构

                            主动执行                                               被动执行

主动执行

startup_xx.s 启动文件:程序执行最基本的文件

       用汇编写的,其中定义了中断向量表、中断服务函数等

中断服务函数中的复位中断——整个程序的入口

system_xx.c / .h :设置微控制器的启动,初始化嵌入式闪存接口、锁相环、更新系统内核的时钟变量

被动执行——STM32的资源

stm32f10x.h + core_cm3.c / .h :外设和内核外设的寄存器描述

库函数文件:封装了寄存器的操作,便于配置外设

stm32f10x_conf.h :配置头文件的包含关系

启动文件的选择——型号分类及缩写


配置寄存器

配置寄存器——RCC寄存器——使能GPIOC时钟

       GPIO是APB2的外设——在7.3.7 RCC_APB2ENR中配置

       PC13口的模式——在8.2.2 GPIOx_CRH中配置

       给PC13口输出数据——在8.2.4 GPIOx_ODR中配置

    RCC -> APB2ENR = 0x00000010;

    GPIOC -> CRH = 0x00300000;

    GPIOC -> ODR = 0x00000000;

需要不断查手册看每个寄存器的每一位是干什么的,并且存在弊端——把除了PC13之外的位都配置成了0,影响其他位,需要&=和|=

这样,虽然代码简单,但是不太方便,需要改进——为工程添加库函数

利用库函数间接配置寄存器

    //使能时钟——配置GPIOC的外设时钟

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

    //配置端口模式(使用结构体来配置参数)

    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);   //高电平

    GPIO_ResetBits(GPIOC,GPIO_Pin_13); //低电平

库函数和寄存器的区别

库函数:经过函数的包装,不需要通过查手册来确认哪一位是干什么的;代码更长但是语义更加明确,只需要调用库函数按照指示填好参数。

寄存器:需要通过查手册来确认哪一位是干什么的


工程模板

STM32与STLINK的连接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值