其他分享
首页 > 其他分享> > 嵌入式系统作业5

嵌入式系统作业5

作者:互联网

目录

一,使用工具

1.stm32f103C8T6
2.USB转串口
3.面包板
4.导线若干
5.LED3个

二,程序设计思路

这里我们通过GPIO端口来点亮LED灯
首先打开GPIO口的时钟
然后初始化GPIO端口
最后设置低电平

1.关于GPIOx地址

在这里插入图片描述

2.时钟的地址

在这里插入图片描述
在这里插入图片描述
打开GPIO端口的时钟这里我们需要将三个位置全部置1

#define RCC_APB2ENR (*(unsigned int *)0x40021018)
// 打开时钟
RCC_APB2ENR |= (1<<3);  // 打开 GPIOB 时钟
RCC_APB2ENR |= (1<<4);  // 打开 GPIOC 时钟
RCC_APB2ENR |= (1<<2);  // 打开 GPIOA 时钟

3.初始化GPIO端口

GPIO端口有八种模式,这里我们使用推挽式输出。
在这里插入图片描述

在这里插入图片描述
端口1-7为低,端口8-15为高。每个引脚由四个位控制。
以GPIOB和0号引脚(B0)为例,将其设置为推挽输出,并设置最大速度为10MHz,则将控制B0的四个位设置为0001

这里GPIO A,B,C分别对应A0,B0,C15
代码如下:

#define GPIOB_CRL (*(unsigned int *)0x40010C00)
#define GPIOC_CRH (*(unsigned int *)0x40011004)
#define GPIOA_CRL (*(unsigned int *)0x40010800)// 配置 GPIO 口为推免输出
// GPIOB----最后四位为0001
GPIOB_CRL |= (1<<0);  // 最后一位变1
GPIOB_CRL &= ~(0xE<<0);  // 倒数2、3、4位变0
// GPIOC----前四位为0001
GPIOC_CRH |= (1<<28);  //  第四位变1
GPIOC_CRH &= ~(0xE0000000);  // 前三位变0
// GPIOA----最后四位为0001
GPIOA_CRL |= (1<<0);  // 最后一位变1
GPIOA_CRL &= ~(0xE<<0);  // 倒数2、3、4位变0

4.设置低电平

在这里插入图片描述
这里GPIO A,B,C分别对应A0,B0,C15
代码如下:

#define GPIOB_ODR (*(unsigned int *)0x40010C0C)
#define GPIOC_ODR (*(unsigned int *)0x4001100C)
#define GPIOA_ODR (*(unsigned int *)0x4001080C)
GPIOB_ODR &= ~(1<<0);  //最后一位变为0
GPIOC_ODR &= ~(1<<15); //倒数16位变为0
GPIOA_ODR &= ~(1<<0);  //最后一位变为0

三,创建LED项目

新建项目

标签:int,作业,系统,unsigned,嵌入式,GPIOB,端口,GPIO,define
来源: https://blog.csdn.net/qq_58222379/article/details/120887452