STM32F103ZE点灯

1.每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存 器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。

2.GPIO口工作模式:

(1)上拉输入:增加高电平的驱动能力;

(2)下拉输入:增加低电平的驱动能力;

(3)模拟输入:检测模拟电压,数据传给ADC做转换(ADC:12位/8位/16位。103用的是12位的);

(4)浮空输入:不具备高低电平驱动能力,直接输入的电压进行转换;

 (5)推挽输出:直接把逻辑值输出成高低电平;

(6)开漏输出:只能输出低电平,输出为1时是高阻态(未知状态,电路上电压由电路来决定);经常应用在总线,需要增加上拉电阻配合使用;具有读取的功能

(7)复用:把IO用做复用其他外设功能时选择复用模式;

(8)通用:只是把IO做普通输出功能

 

 3.TTL肖特基触发器:把高低电平电压值转换位逻辑值

        

 4、寄存器:片上外设存储相应配置数据/状态数据/数据值等的空间

        GPIO寄存器:

        

 

5.软件编程驱动:(点亮LED1)

(1)提供时钟:RCC   APB2外设时钟使能寄存器

(2)配置IO功能(0011)

(3)操作输出数据寄存器:控制外部输出的高低电平

          RCC->APB2ENR |=(0x01<<3);//时钟

         GPIOB->CRL &=~(0x0F<<4);

         GPIOB->CRL |=(0x03<<4);

代码

*************led.h*****************************************************

#ifndef LED_H

#define LED_H

#include "stm32f10x.h"

void led1_Config(void);

void led1(uint8_t flag);

#endif

*************led.c************************************************************

#include "led.h"

void led1_Config(void)

{

        //1、开时钟

        RCC->APB2ENR |=(0x01<<6);//打开时钟

        //2、进行配置    0011

        GPIOE->CRL &= ~(0xf<<8);//清零    xxxx  0000 xxxx xxxx

         GPIOE->CRL |= (0x3<<8);//置1      xxxx   0011 xxxx xxxx

}

void led1(uint8_t flag)

{

        if(flag == 1)//开灯

        GPIOE->ODR &= ~(0x1<<2);

        else if(flag == 0)//关灯

        GPIOE->ODR |= (0x1<<2);//置1

}

*********main.c*******************************************

#include"led.h"

int main(void)

{

        led1_Config();

        led1(1);//开灯

        //led1(0);//关灯

        while(1)

        {

                ;

        }

}

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...
win11本地账户怎么改名?win11很多操作都变了样,用户如果想要...