1.1扩展板

1.2核心板

引脚连接

LED1----->PE10------->SOC
LED2----->PF10------->SOC
LED3----->PE8------->SOC
LED灯工作原理
当PE10引脚给高电平时,LD1灯点亮
当PE10引脚给低电平时,LD1灯熄灭
当PF10引脚给高电平时,LD2灯点亮
当PF10引脚给低电平时,LD2灯熄灭
当PE8引脚给高电平时,LD3灯点亮
RCC部分分析

确定RCC基地址

RCC相关寄存器

GPIO部分

GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR,GPIOx_ODR寄存器作用:
GPIOx_MODER:GPIO模式寄存器 ---->设置为输出/输入/复用/模拟模式
GPIOx_OTYPER:GPIO输出类型寄存器 ---->设置为推挽/开漏输出
GPIOx_OSPEEDR:GPIO输出速度寄存器
GPIOx_PUPDR:GPIO是否需要外接上下拉电阻 ------>上拉电阻/下拉电阻
GPIOx_ODR:GPIO输出数据寄存器 ------> 设置GPIO引脚输出高低电平
LED1------->PE10引脚为,进行分析
1.如何确定GPIOE_MODER寄存器地址?
地址 = 基地址 + 偏移地址 = 0x50006000 + 0x00 = 0x50006000
2.如何通过GPIOE_MODER寄存器设置PE10引脚为输出功能?
向0x50006000地址中第[21:20]写入01的值,就设置PE10引脚为输出模式
GPIOE_MODER[21:20] = 01 ----->设置PE10引脚为输出模式
LED2------->PF10引脚为,进行分析
1.如何确定GPIOE_MODER寄存器地址?
地址 = 基地址 + 偏移地址 = 0x50007000 + 0x00 = 0x50007000
2.如何通过GPIOE_MODER寄存器设置PF10引脚为输出功能?
向0x50007000地址中第[21:20]写入01的值,就设置PF10引脚为输出模式
GPIOE_MODER[21:20] = 01 ----->设置PF10引脚为输出模式
LED3同理
LED1------->PE10引脚为例,进行分析
1.如何确定GPIOE_OTYPER寄存器地址?
地址 = 基地址 + 偏移地址 = 0x50006000 + 0x04 = 0x50006004
2.如何通过GPIOE_OTYPER寄存器设置PE10引脚为推挽输出类型?
向 0x50006004地址中第[10]写入0的值,就设置PE10引脚为推挽输出类型
GPIOE_OTYPER[10] = 0 ----->设置PE10引脚为推挽输出类型
推挽输出模式,PMOS管和NMOS管都可以正常工作,输出高低电平
开漏输出模式
开漏输出:PMOS管不工作,只有NMOS管可以正常工作,输出低电平,如果想输出高电平,需要接上拉电阻
分析GPIOx_OSPEEDR寄存器

该博客详细介绍了如何使用汇编和C语言来控制STM32MP157a微控制器的LED1、LED2和LED3。通过分析RCC和GPIO寄存器,设置了LED对应的引脚为输出模式,并解释了推挽和开漏输出的区别。最后,提供了汇编和C语言的代码实现。
最低0.47元/天 解锁文章
266

被折叠的 条评论
为什么被折叠?



