cortex-A7芯片实现LED灯亮灭
步骤:
1.观察LED灯的丝印,三个小灯名字叫LED1,LED2,LED3,并观察拓展板,找到三个小灯对应的电路图费,分析电路图可得知三个小灯的工作原理为引脚写高电平,灯点亮,引脚写低电平,灯熄灭。
2.知道了小灯扩展板上的名称,去芯片的资源扩展板J1上去寻找小灯对应的管脚,分别为
LED1—–>PE10
LED2—–>PF10
LED3—–>PE8
3.了解SOC(stm32mp157a)芯片的框图
4.通过框图分析可知,实现小灯亮灭需要寻找芯片手册的GPIO章节和RCC章节
5.分析RCC章节
a.通过芯片手册2.5.2章节确定RCC在AHB4总线上,然后可以确定其基地址为0x50000000,而RCC寄存器中控制GPIO使能的寄存器名字为RCC_MP_AHB4ENSETR,其偏移地址为0xA28,所以其地址为0x50000A28。
b.通过上述分析得知小灯需要用到引脚有GPIOE,和GPIOF引脚,因此需要使这两个引脚使能,因此需要设置0x50000A28地址的第四个位置和第五个位置,设置参数为1使对应的GPIO控制器工作。
6.分析GPIO章节
a.分析GPIO的框图
b.分析13.3.3章节了解I/O端口控制寄存器的作用,通过分析可得知
GPIOx_MODER为GPIO模式寄存器(设置输出模式)
GPIOx_OTYPER为GPIO输出类型寄存器(设置为推挽/开漏模式)
GPIOx_OSPEEDR为GPIO输出速度寄存器(设置为输出速率)
GPIOx_PUPDR为GPIO是否需要上下拉电阻
GPIOx_ODR为GPIO为输出数据寄存器(输出高低电平,实现LED灯点亮熄灭)
c.分析GPIOx_MODER寄存器
LED1引脚分析,确定GPIOE_MODER寄存器的地址=基地址+偏移地址=0x50006000+0x00=0x50006000,设置PE10引脚为输出模式需要将GPIOE_MODER寄存器地址的第21位到20位的参数设置为01(输出模式)。
LED2引脚分析,确定GPIOF_MODER寄存器的地址=基地址+偏移地址=0x50006000+0x00=0x50006000,设置PF10引脚为输出模式需要将GPIOF_MODER寄存器地址的第21位到20位的参数设置为01(输出模式)。
LED3引脚分析,确定GPIOE_MODER寄存器的地址=基地址+偏移地址=0x50006000+0x00=0x50006000,设置PE8引脚为输出模式需要将GPIOE_MODER寄存器地址的第17位到16位的参数设置为01(输出模式)。
d.分析GPIOx_OTYPER寄存器
LED1引脚分析,确定GPIOE_OTYPER寄存器地址=基地址+偏移地址=0x50006000+0x04=0x50006004,设置PE10引脚为推挽输出模式需要将GPIOE_OTYPER寄存器地址的第10位的参数设置为0(推挽输出模式)。
LED2引脚分析,确定GPIOF_OTYPER寄存器地址=基地址+偏移地址=0x50006000+0x04=0x50006004,设置PE10引脚为推挽输出模式需要将GPIOF_OTYPER寄存器地址的第10位的参数设置为0(推挽输出模式)。
LED3引脚分析,确定GPIOE_OTYPER寄存器地址=基地址+偏移地址=0x50006000+0x04=0x50006004,设置PE10引脚为推挽输出模式需要将GPIOE_OTYPER寄存器地址的第8位的参数设置为0(推挽输出模式)。
e.分析GPIOx_OSPEEDR寄存器
LED1引脚分析,确定GPIOE_OSPEEDR寄存器地址=基地址+偏移地址=0x50006000+0x08=0x50006008,设置PE10引脚为低速输出模式需要将GPIOE_OTYPER寄存器地址的第21位和第20位的参数设置为00(低速输出模式)。
LED2引脚分析,确定GPIOF_OSPEEDR寄存器地址=基地址+偏移地址=0x50006000+0x08=0x50006008,设置PF10引脚为低速输出模式需要将GPIOF_OTYPER寄存器地址的第21位和第20位的参数设置为00(低速输出模式)。
LED3引脚分析,确定GPIOE_OSPEEDR寄存器地址=基地址+偏移地址=0x50006000+0x08=0x50006008,设置PE8引脚为低速输出模式需要将GPIOE_OTYPER寄存器地址的第17位和第16位的参数设置为00(低速输出模式)。
f.分析GPIOx_PUPDR寄存器
LED1引脚分析,确定GPIOE_PUPDR寄存器地址=基地址+偏移地址=0x50006000+0x0C=0x5000600C,设置PE10引脚为禁止上下拉模式需要将GPIOE_PUPDR寄存器地址的第21位和第20位的参数设置为00(低速输出模式)。
LED2引脚分析,确定GPIOF_PUPDR寄存器地址=基地址+偏移地址=0x50006000+0x0C=0x5000600C,设置PF10引脚为禁止上下拉模式需要将GPIOF_PUPDR寄存器地址的第21位和第20位的参数设置为00(低速输出模式)。
LED3引脚分析,确定GPIOE_PUPDR寄存器地址=基地址+偏移地址=0x50006000+0x0C=0x5000600C,设置PE8引脚为禁止上下拉模式需要将GPIOE_PUPDR寄存器地址的第17位和第16位的参数设置为00(低速输出模式)。
g.分析GPIOx_ODR寄存器
LED1引脚分析,确定GPIOE_ODR寄存器地址=基地址+偏移地址=0x50006000+0x14=0x50006014,设置PE10引脚为禁止上下拉模式需要将GPIOE_ODR寄存器地址的第10位的参数设置为0(低电平输出模式)或者1(高电平输出模式)。
LED1引脚分析,确定GPIOF_ODR寄存器地址=基地址+偏移地址=0x50006000+0x14=0x50006014,设置PF10引脚为禁止上下拉模式需要将GPIOF_ODR寄存器地址的第10位的参数设置为0(低电平输出模式)或者1(高电平输出模式)。
LED1引脚分析,确定GPIOE_ODR寄存器地址=基地址+偏移地址=0x50006000+0x14=0x50006014,设置PE8引脚为禁止上下拉模式需要将GPIOE_ODR寄存器地址的第8位的参数设置为0(低电平输出模式)或者1(高电平输出模式)。
7.汇编编写代码实现小灯亮灭
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!