STM32MP157A学习笔记

1、寄存器
1.1 SCR寄存器:
SystemInit()函数操作SCB->VTOR重定位中断向量表,在STM32MP157参考手册中未找到相关寄存器。通过百度得知,这个寄存器定义需要参考《ARM+Cortex-M3与Cortex-M4权威指南》。通过查找该手册在“”4.6章节系统控制块”找到该寄存器描述信息。7.9.3章节 向量表偏移寄存器(VTOR)在不同版本的Cortex-M3和Cortex-M4有些区别但寄存器地址都为0xE000ED0C

2、启动文件
startup_stm32mp15xx.s
启动文件是系统上电后第一个运行的程序文件,主要由汇编语言编写

3、堆、栈
堆:用于存放进程运行中被动态分布的内存段,一般由程序员释放。
栈:一般是存放函数的参数值和局部变量的值。由编译器自动分配释放。
若工程中使用的局部变量较多,定义的数据长度较大时,如果不调整栈的空间大小,就会导致程序栈溢出,程序运行异常。

4、链接脚本
程序编译步骤:预处理、汇编、编译、链接

5、模块功能开发
5.1 GPIO
5.1.1 介绍
每个GPIO都有4个32 bit配置寄存器(GPIOx_MODER,GPIOx_OTYPER, GPIOx_OSPEEDR and GPIOx_PUPDR),2个32 bit数据寄存器(GPIOx_IDR and GPIOx_ODR)和1个32 bit置位\复位寄存器(GPIOx_BSRR)。另外所有的GPIO都有一个32 bit锁定寄存器(GPIOx_LCKR)和2个32 bit复用功能寄存器(GPIOx_AFRH and GPIOx_AFRL)。

5.1.2 GPIO主要feature
输出状态:push-pull or open drain + pull-up/down(上拉或下拉的推挽或开漏)
输入状态:浮空,上拉,下拉,模拟
5.1.3 GPIO功能描述
输入浮空
输入上拉
输入下拉
模拟输入
上拉或下拉开漏输出
上拉或下拉推挽输出
上拉或下拉推挽复用功能
上拉或下拉开漏复用功能
注解:开漏输出: "漏"指的是 MOS 管的漏极,其输出端相当于三极管的集电极,默认情况下,开漏只能输出低电平,要得到有驱动能力的高电平状态需要加上拉电阻才行。
推挽输出:推挽输出的结构是由两个三极管或者 MOS 管受到互补信号的控制,两个管子始终保持一个处于截止,另一个处于导通的状态,此时电路可以真正的输出高电平或者低电平,且两种电平下都有驱动能力(即有输出电流的能力)。
STM32 的内部上拉是一种“弱上拉”,这样的上拉电流很弱,如果有要求大电流还是得外部上拉。
5.1.4 操作寄存器实现点灯功能
测试环境,通过CubeIDE配置基本的代码环境
代码实现如下

01 使能需要使用的GPIO的时钟
void MX_GPIO_Init(void)
{
  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOG_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /* Enable  GPIOZ for LED by YY*/
  __HAL_RCC_GPIOZ_CLK_ENABLE();
}
02 手动配置相关寄存器
void led_init(void)
{
    //01: General purpose output mode
    GPIOZ->MODER = (GPIO_MODER_MODER5_0 | GPIO_MODER_MODER6_0 | GPIO_MODER_MODER7_0);
    //0: Output push-pull (reset state)
    GPIOZ->OTYPER = 0x00;
    //10: High speed
    GPIOZ->OSPEEDR = (GPIO_OSPEEDR_OSPEEDR5_1 | GPIO_OSPEEDR_OSPEEDR6_1 | GPIO_OSPEEDR_OSPEEDR7_1);
    //10: Pull-down
    GPIOZ->PUPDR = (GPIO_PUPDR_PUPDR5_1 | GPIO_PUPDR_PUPDR6_1 | GPIO_PUPDR_PUPDR7_1);
}
03 配置输出寄存器实现开关功能
void led_on(void)
{
    GPIOZ->ODR = (GPIO_ODR_ODR5 | GPIO_ODR_ODR6 | GPIO_ODR_ODR7);
}

void led_off(void)
{
    GPIOZ->ODR = 0x00;
}

main函数中调用led_on()和led_off()
/----------------------------------------------------------- 2021/09/25 ---------------------------------------------------------------------------/

5.2 中断
5.2.1 NVIC Features
1) 150个可屏蔽的中断通道
2)16个可编程的优先级等级(使用4bit的中断优先级)
3)低延迟的异常和中断处理
4)Power management control
5)实现系统寄存器控制

5.2.2 SysTick校正值寄存器
由于SysTick没有运行在一个固定频率,没有SysTick校正值可用。SysTick重新加载计数器应根据所需的时间基准和RCC中设置的mcu_ck频率值进行设置。

/----------------------------------------------------------- xx xx xx ---------------------------------------------------------------------------/

第08课 ARM体系结构与接口技术- STM32MP1 Cortex-A7

课时1 Cortex-A7环境搭建

  1. 安装串口调试工具软件xshell

/----------------------------------------------------------- 2022/02/27 ---------------------------------------------------------------------------/

你可能感兴趣的:(嵌入式,stm32)