第一个程序(STM32F103点灯)

点亮LED

  1. 看原理图确定控制LED的引脚
  2. 看主芯片手册确定如何设置/控制引脚
  3. 写程序

LED有很多种,像插脚的,贴片的。
第一个程序(STM32F103点灯)_第1张图片
它们长得完全不一样,因此我们在原理图中将它抽象出来。

第一个程序(STM32F103点灯)_第2张图片
嵌入式系统中,一个LED的电阻非常低,I = U/R,因此I非常大,会将LED烧坏,所以需要串联一个电阻。
第一个程序(STM32F103点灯)_第3张图片
点亮LED需要通电源,同时为了保护LED,加个电阻减小电流。
控制LED灯的亮灭,可以手动开关LED,但在电子系统中,不可能让人来控制开关,通过编程,利用芯片的引脚去控制开关。
第一个程序(STM32F103点灯)_第4张图片

第一个程序(STM32F103点灯)_第5张图片
LED的驱动方式,常见的有四种。
方式1:使用引脚输出3.3V点亮LED,输出0V熄灭LED。
方式2:使用引脚拉低到0V点亮LED,输出3.3V熄灭LED。

有的芯片为了省电等原因,其引脚驱动能力不足,这时可以使用三极管驱动。
方式3:使用引脚输出1.2V点亮LED,输出0V熄灭LED。
方式4:使用引脚输出0V点亮LED,输出1.2V熄灭LED。

由此,主芯片引脚输出高电平/低电平,即可改变LED状态,而无需关注GPIO引脚输出的是3.3V还是1.2V。
所以简称输出1或0:
逻辑1–>高电平
逻辑0–>低电平

电路基础

第一个程序(STM32F103点灯)_第6张图片
当左边电压大于右边电压时,电流就会通过。
第一个程序(STM32F103点灯)_第7张图片
当P级电压大于N级电压时,三极管就会导通。

GPIO引脚操作方法

GPIO:General-purpose input/output,通用输入/输出口。

GPIO模块一般结构:

  • 有多组GPIO,每组有多个GPIO。
  • 使能:电源/时钟
  • 模式(Mode):引脚可用于GPIO或其它功能
  • 方向:引脚Mode设置为GPIO时,可以继续设置它是输出引脚,还是输入引脚。
  • 数值:对于输出引脚,可以设置寄存器让它输出高、低电平。对于输入引脚,可以读取寄存器得到引脚的当前电平。
    第一个程序(STM32F103点灯)_第8张图片

GPIO寄存器的2种操作方法

不能影响到其他位

直接读写:读出、修改对应位、写入

// 要设置bit n
val = data_reg;
val |= (1 << n);
data_reg = val;

// 要清除bit n
val = data_reg;
val &= ~(1<<n);
data_reg = val;

set-and-clear protocol:
set_reg,clr_reg,data_reg三个寄存器对应的是同一个物理寄存器

要设置bit n:set_reg = (1<<n);
要清除bit n:clr_reg = (1<<n);

第一个程序(STM32F103点灯)_第9张图片
在这里插入图片描述

复位和时钟控制RCC

第一个程序(STM32F103点灯)_第10张图片
在这里插入图片描述
第一个程序(STM32F103点灯)_第11张图片
在这里插入图片描述

怎么访问寄存器

unsigned int *p=0x40010800;
*p = val;
val = *p;

第一个程序(STM32F103点灯)_第12张图片
第一个程序(STM32F103点灯)_第13张图片

你可能感兴趣的:(stm32,stm32,单片机,嵌入式硬件)