关于 编译生成的 文件类型介绍:
.hex 可用串口i进行 烧录 的 16进制 文件。
.axf 是通过 link 方式 进行直接仿真 下载的 文件。
.sct 是编译过程中 生成的 加载、分载文件。
后续还有,以后细讲。
实战代码编写:
STM32F103C8T6原理图
LED 灯点亮。
需要读手册:
对 GPIO(输出端口进行 操作)
GPIO 简介
GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片
的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚,如型号为 STM32F103VET6 型号的
芯片有 GPIOA、GPIOB、GPIOC至 GPIOE共 5组 GPIO,芯片一共 100个引脚,其中 GPIO
就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。
最基本的输出功能是由 STM32 控制引脚输出高、低电平,实现开关控制,如把 GPIO
引脚接入到 LED灯,那就可以控制 LED灯的亮灭,引脚接入到继电器或三极管,那就可以
通过继电器或三极管控制外部大功率电路的通断。
最基本的输入功能是检测外部输入电平,如把 GPIO 引脚连接到按键,通过电平高低
区分按键是否被按下。
从而达到对 寄存器的操作。
继续
此节课网址:
根据读原理图 可得控制 PC13
再读手册:(GPIO输出端)
在手册 存储器映射中可找到 PC的基址:
进行相加运算 找到 P13所对应的 地址:
可以进行 关闭:
这就关闭了。
之后进行 代码编写:
在写好了 PC13后继续进行 输入输出 模式的 寄存器 定义:
PC13 13>8 为 高 8位 所以选择 高寄存器
且 13 (10)= C
一定要加上偏移量 哦!
注意:偏移量。
还要注意打开 外设 时钟 控制器:
RCC 外设 基址
根据以上条件 编写代码:
#include "stm32f10x.h" // Device header
int main(void)
{
// 打开 GPIO C 端口 时钟
*(unsigned int *)0x40021018 |= ((1)<<4);
//先清零 CRH 这样做比较严谨
*(unsigned int *)0x40011004&= ~((0x0f)<<(4*5));
//配置 IO 口 为 输出模式
*(unsigned int *)0x40011004 |= ((1)<<(4*5));
//控制 ODR 寄存器
*(unsigned int *)0x4001100C |= ~((1)<<13);
}
void SystemInit(void)
{
//函数体为空,目的是为了骗过编译器不报错
}
成功运行!!!!
STM32马上入门了。加油哦!!!!
总结:
1.先 打开 选哪个 寄存器的 时钟:
\2. 再 打开 选择 哪的GPIO 接口的 输入输出模式
3.在选择 ODR 上输出的 高低电平。
练习:再此功能上 加上 一个延时函数 进行 LED灯 闪烁。
(注意:在初学阶段,晶振没有定义,芯片默认为内部晶振 8MHZ)
#include "stm32f10x.h" // Device header
void LED(unsigned char n)
{
switch(n)
{
case 0:
*(unsigned int *)0x4001100C |= ((1)<<13);
break;
case 1:
//控制 ODR 寄存器
*(unsigned int *)0x4001100C &=~ ((1)<<13);
break;
}
}
void Dealy(unsigned int t)
{
while(t--);
}
int main(void)
{
// 打开 GPIO C 端口 时钟
*(unsigned int *)0x40021018 |= ((1)<<4);
//先清零 CRH 这样做比较严谨
*(unsigned int *)0x40011004&= ~((0x0f)<<(4*5));
//配置 IO 口 为 输出模式
*(unsigned int *)0x40011004 |= ((1)<<(4*5));
while(1)
{
Dealy(60000);
Dealy(60000); //土方法延时
Dealy(60000);
Dealy(60000);
Dealy(60000);
LED(0);
Dealy(60000);
Dealy(60000);
Dealy(60000);
Dealy(60000);
Dealy(60000);
LED(1);
}
}
void SystemInit(void)
{
//函数体为空,目的是为了骗过编译器不报错
}
不要嫌弃 现在 代码的 “俗气”(不要气馁哦!!!)
等以后学了 定时器 ‘计数器 ,中断后,代码的水平会大大提高。(你会慢慢爱上嵌入式的)
充实的一天结束了!!!明天会元气满满哦。
再见喽!