ARM实现LED灯亮灭

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进行处理,非常感谢!

上一篇 2022年9月1日
下一篇 2022年9月2日

相关推荐