IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32MP157A学习笔记 -> 正文阅读

[嵌入式]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 ---------------------------------------------------------------------------/

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:20:39  更:2021-09-26 10:21:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:55:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码