[1-1] 课程简介

面包板

没有示波器对最终的现象影响不大

系统结构

安装Keil5 MDK

Keil5软件安装教程(MDKv5.36)

面包板+跳线+飞线+杜邦线+0.96OLED显示屏(4引脚版本)+电位器(作为AD转换试验)+stlink:用来下载程序和供电

        STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器

        STM32常应用在嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制、娱乐电子产品等

        STM32功能强大、性能优异、片上资源丰富、功耗低,是一款经典的嵌入式微控制器

STM32F1

系列:主流系列STM32F1

内核:ARM Cortex-M3

主频:72MHz

RAM:20K(SRAM)

ROM:64K(Flash)

供电:2.0~3.6V(标准3.3V)

封装:LQFP48

函数库

第二个 Libraries 里面就是库函数的文件了,我们之后建工程时会用到
第三个 Project 是官方提供的工程示例和模板,以后使用库函数的时候参考
第四个 Utilities 是 STM32 官方评估板的相关例程
这个评估板就是官方用 STM32 做的一个小电路板,用来测评 STM32
这个文件夹里面存的就是这个小电路板的测评程序

新建一个基于标准库的工程

工程文件名字 Project

(文件夹的名称是很方便改的,这个名称以后不太方便改)

选择器件型号->选择 STM32F103C8T6

        这个页面跳出的是 Keil 软件的一个新建工程小助手

此时项目为空,添加一些必要的工程文件

打开固件库的文件夹

Libraries-CMSIS-CM3-DeviceSupport-ST-STM32F10x-Startup-arm复制到项目文件夹,新建Start文件夹

        可以看到 stm32f10x.h 和两个 system 开头的文件 这个 stm32f10x.h,就是 STM32 的外设寄存器描述文件 它的作用就跟 51 单片机的头文件 REGX52.H 一样 那我们把这三个文件复制下来,也粘贴到 Start 文件夹

        因为这个 STM32 是内核和内核外围的设备组成的 而且这个内核的寄存器描述和外围设备的描述文件不是在一起的 所以我们还需要添加一个内核寄存器的描述文件 打开 CM3,CoreSupport,这两个 cm3 (Cortex-M3) 文件就是内核的寄存器描述,复制粘贴到start。

        工程文件复制完毕!

回到keil,把我们刚才复制的那些文件添加到工程里来,把改名为Start

        这里的文件都是STM32里最基本的文件,是不需要我们修改的。

        最后我们还需要在工程选项里添加上这个文件头路径,要不然软件是找不到.h 文件的。

我们点击这个魔术棒按钮,打开工程选项,在 C/C++ 里 找到这个 Include Paths 栏,然后点击右边三个按钮

点击新建路径

然后再点三个点的按钮,把Start的路径添加上来

接下来我们再新建一个main函数,看看这个工程是否可行

新建User文件夹,我们的 main 函数就放在这个文件夹里

然后Keil里,在Target这里右键,点击添加组,改名为User

这个工程目前还没有添加 STM32 的库函数 所以它还是一个基于寄存器开发的工程

 

在keil5

编辑寄存器操作了解即可

使能时钟 

库函数里面用来开启时钟

RCC_APB2PeriphClockCmd(选择外设,选择新的状态)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

配置端口模式

GPIO_Init(选择哪个 GPIO,参数的结构体)

先定义结构体

GPIO_InitTypeDef GPIO_InitStruct

GPIO_InitStruct 是官方的结构体名称

        可以看到这个结构体有三个参数,分别是 GPIO 模式、GPIO 端口、GPIO 速度

GPIO模式配置完成。这个配置的操作方式看上去比较难理解,但是 STM32 的这种方式都是固定的

设置端口的高低电平进行点灯

GPIO_SetBits,这个就可以把指定端口设置为高电平

    /*RCC->APB2ENR = 0x00000010;
    GPIOC->CRH = 0x00300000;
    GPIOC->ODR = 0x00002000;
    */
    
    //使能时钟 
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    
    //GPIO模式配置
    //定义结构体
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    
    GPIO_Init(GPIOC, &GPIO_InitStruct);
    
    //设置端口的高低电平进行点灯
    //置为高电平 灯灭
    GPIO_SetBits(GPIOC, GPIO_Pin_13);
    
    //置为低电平 灯亮
    //GPIO_ResetBits(GPIOC, GPIO_Pin_13);

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐