A30 STM32_HAL库函数 之 NAND通用驱动 -- A-- 所有函数的介绍及使用

A30 STM32_HAL库函数 之 NAND通用驱动 -- A-- 所有函数的介绍及使用

  • 1 该驱动函数预览
      • 1.1 HAL_NAND_Init
      • 1.2 HAL_NAND_DeInit
      • 1.3 HAL_NAND_MspInit
      • 1.4 HAL_NAND_MspDeInit
      • 1.5 HAL_NAND_IRQHandler
      • 1.6 HAL_NAND_ITCallback
      • 1.7 HAL_NAND_ConfigDevice
      • 1.8 HAL_NAND_Read_ID
      • 1.9 HAL_NAND_Reset
      • 1.10 HAL_NAND_Read_Page_8b
      • 1.11 HAL_NAND_Read_Page_16b
      • 1.12 HAL_NAND_Write_Page_8b
  • 该文档修改记录:
  • 总结

1 该驱动函数预览

序号函数名描述
1HAL_NAND_Init()初始化NAND闪存设备。
2HAL_NAND_DeInit()反初始化NAND闪存设备。
3HAL_NAND_MspInit()初始化MCU外设相关的NAND引脚或资源。
4HAL_NAND_MspDeInit()反初始化MCU外设相关的NAND引脚或资源。
5HAL_NAND_IRQHandler()NAND闪存中断处理程序。
6HAL_NAND_ITCallback()NAND闪存中断回调函数。
7HAL_NAND_ConfigDevice()配置NAND闪存设备。
8HAL_NAND_Read_ID()读取NAND闪存设备的ID。
9HAL_NAND_Reset()复位NAND闪存设备。
10HAL_NAND_Read_Page_8b()从NAND闪存设备中读取8位数据页。
11HAL_NAND_Read_Page_16b()从NAND闪存设备中读取16位数据页。
12HAL_NAND_Write_Page_8b()向NAND闪存设备中写入8位数据页。
13HAL_NAND_Write_Page_16b()向NAND闪存设备中写入16位数据页。
14HAL_NAND_Read_SpareArea_8b()从NAND闪存设备中读取8位备用区。
15HAL_NAND_Read_SpareArea_16b()从NAND闪存设备中读取16位备用区。
16HAL_NAND_Write_SpareArea_8b()向NAND闪存设备中写入8位备用区。
17HAL_NAND_Write_SpareArea_16b()向NAND闪存设备中写入16位备用区。
18HAL_NAND_Erase_Block()擦除NAND闪存设备的块。
19HAL_NAND_Read_Status()读取NAND闪存设备的状态。
20HAL_NAND_Address_Inc()NAND闪存地址自增函数。
21HAL_NAND_ECC_Enable()启用NAND闪存设备的ECC(错误校验和纠正)。
22HAL_NAND_ECC_Disable()禁用NAND闪存设备的ECC。
23HAL_NAND_GetECC()获取NAND闪存设备的ECC信息。
24HAL_NAND_GetState()获取NAND闪存设备的状态。
25HAL_NAND_Read_Status()读取 NAND Flash 的状态寄存器

以下是使用模板:

#include "stm32f4xx_hal.h"

int main(void) {
    // HAL初始化
    HAL_Init();
    
    // 初始化MCU外设相关的NAND引脚或资源
    HAL_NAND_MspInit();
    
    // 初始化NAND闪存设备
    HAL_NAND_Init();
    
    // 进行其他操作...
    
    // 配置NAND闪存设备
    HAL_NAND_ConfigDevice();
    
    // 从NAND闪存设备中读取ID
    HAL_NAND_Read_ID();
    
    // 读取NAND闪存设备的状态
    HAL_NAND_Read_Status();
    
    // 反初始化NAND闪存设备
    HAL_NAND_DeInit();
    
    // 反初始化MCU外设相关的NAND引脚或资源
    HAL_NAND_MspDeInit();
    
    return 0;
}

1.1 HAL_NAND_Init

函数名HAL_NAND_Init
函数原形HAL_StatusTypeDef HAL_NAND_Init(NAND_HandleTypeDef *hnand)
功能描述初始化 NAND Flash 外设
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.2 HAL_NAND_DeInit

函数名HAL_NAND_DeInit
函数原形HAL_StatusTypeDef HAL_NAND_DeInit(NAND_HandleTypeDef *hnand)
功能描述反初始化 NAND Flash 外设
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.3 HAL_NAND_MspInit

函数名HAL_NAND_MspInit
函数原形void HAL_NAND_MspInit(NAND_HandleTypeDef *hnand)
功能描述初始化 NAND Flash 外设相关的 GPIO 和时钟等
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值
先决条件
被调用函数

1.4 HAL_NAND_MspDeInit

函数名HAL_NAND_MspDeInit
函数原形void HAL_NAND_MspDeInit(NAND_HandleTypeDef *hnand)
功能描述反初始化 NAND Flash 外设相关的 GPIO 和时钟等
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值
先决条件
被调用函数

1.5 HAL_NAND_IRQHandler

函数名HAL_NAND_IRQHandler
函数原形void HAL_NAND_IRQHandler(NAND_HandleTypeDef *hnand)
功能描述处理 NAND Flash 外设的中断
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值
先决条件
被调用函数

1.6 HAL_NAND_ITCallback

函数名HAL_NAND_ITCallback
函数原形void HAL_NAND_ITCallback(NAND_HandleTypeDef *hnand)
功能描述处理 NAND Flash 外设的中断回调函数
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值
先决条件
被调用函数

1.7 HAL_NAND_ConfigDevice

函数名HAL_NAND_ConfigDevice
函数原形HAL_StatusTypeDef HAL_NAND_ConfigDevice(NAND_HandleTypeDef *hnand, NAND_TimingTypeDef *pTiming, NAND_InitTypeDef *pConfig)
功能描述配置 NAND Flash 外设
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pTiming:NAND Flash 外设的时序参数,指向一个 NAND_TimingTypeDef 结构体
输入参数 3pConfig:NAND Flash 外设的初始化参数,指向一个 NAND_InitTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.8 HAL_NAND_Read_ID

函数名HAL_NAND_Read_ID
函数原形HAL_StatusTypeDef HAL_NAND_Read_ID(NAND_HandleTypeDef *hnand, NAND_IDTypeDef *pNAND_ID)
功能描述读取 NAND Flash 的 ID
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pNAND_ID:存储 NAND Flash ID 的结构体,指向一个 NAND_IDTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.9 HAL_NAND_Reset

函数名HAL_NAND_Reset
函数原形HAL_StatusTypeDef HAL_NAND_Reset(NAND_HandleTypeDef *hnand)
功能描述复位 NAND Flash 外设
输入参数hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.10 HAL_NAND_Read_Page_8b

函数名HAL_NAND_Read_Page_8b
函数原形HAL_StatusTypeDef HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pData, uint32_t Size)
功能描述以 8 位

模式读取 NAND Flash 中的一页数据 |
| 输入参数 1 | hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体 |
| 输入参数 2 | pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体 |
| 输入参数 3 | pData:存储读取数据的缓冲区 |
| 输入参数 4 | Size:要读取的数据字节数 |
| 输出参数 | pData:存储读取数据的缓冲区 |
| 返回值 | HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR |
| 先决条件 | 无 |
| 被调用函数 | 无 |


1.11 HAL_NAND_Read_Page_16b

函数名HAL_NAND_Read_Page_16b
函数原形HAL_StatusTypeDef HAL_NAND_Read_Page_16b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint16_t *pData, uint32_t Size)
功能描述以 16 位模式读取 NAND Flash 中的一页数据
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
输入参数 3pData:存储读取数据的缓冲区
输入参数 4Size:要读取的数据字节数
输出参数pData:存储读取数据的缓冲区
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.12 HAL_NAND_Write_Page_8b

函数名HAL_NAND_Write_Page_8b
函数原形HAL_StatusTypeDef HAL_NAND_Write_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressTypeDef *pAddress, uint8_t *pData, uint32_t Size)
功能描述以 8 位模式写入数据到 NAND Flash 的一页
输入参数 1hnand:NAND 句柄,指向一个 NAND_HandleTypeDef 结构体
输入参数 2pAddress:NAND Flash 内的地址,指向一个 NAND_AddressTypeDef 结构体
输入参数 3pData:要写入的数据缓冲区
输入参数 4Size:要写入的数据字节数
输出参数
返回值HAL_StatusTypeDef:操作状态,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数


该文档修改记录:

修改时间修改说明
2024年4月30日第一次发布,介绍了该博客驱动所有函数的介绍及使用

总结

以上就是该博客驱动所有函数的介绍及使用的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/570490.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

13. Spring AOP(一)思想及使用

1. 什么是Spring AOP AOP的全称是Aspect Oriented Programming,也就是面向切面编程,是一种思想。它是针对OOP(面向对象编程)的一种补充,是对某一类事情的集中处理。比如一个博客网站的登陆验证功能,在用户进行新增、编辑、删除博…

js手写call、bind、apply

目录 call与applyapply bind call和apply和bind有两种实现方式,第一种是隐式绑定,第二种是通过new 无论是通过隐式绑定实现还是通过new实现,核心都是针对this的绑定规则 具体关于this的绑定规则可以看我这一篇博客 this绑定规则 call与apply…

【热议】硕士和读博士洗碗区别的两大理论

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

【软件测试基础】概述篇(持续更新中)

《 软件测试基础持续更新中》 这一章,是每一名软件测试工程师必须要掌握的常识! 1、软件测试的目的:提高软件质量 和 确保软件满足用户需求。 2、软件测试的概念:使用人工或自动手段来运行或测试某个系统的过程,目的…

品牌差异化战略:Kompas.ai如何打造独特的内容声音

在当今竞争激烈的商业环境中,品牌差异化已成为企业获取市场优势的关键策略。一个鲜明的品牌形象和独特的内容声音不仅能够帮助企业吸引目标客户,还能够在消费者心中建立起独特的地位。本文将深入探讨品牌差异化的重要性,分析Kompas.ai如何帮助…

SL3037内置MOS管 耐压60V降压恒压芯片 降12V或降24V 电路简单

SL3037B是一款内置功率MOSFET的单片降压型开关模式转换器,具有以下特点: 1. 高效率:采用开关式降压技术,仅在需要调节输出电压时才会消耗能量,从而提高了整体的效率。 2. 稳定性好:通过精确的内部电路设计…

数睿通2.0版本升级:探索数据血缘的奥秘

引言 数睿通 2.0 迎来了 4 月份的更新,该版本更新了许多用户期望的数据血缘模块,把原来外链跳转 neo4j 页面改为自研页面,方便后期的二次开发完善,此外,新版本摒弃了 neo4j 的血缘数据存储方案,一来是因为…

接口压力测试 jmeter--进阶篇(三)

一、数据实时监控JMeterGrafanaInfluxdb (mac)性能监控平台搭建JMeterGrafanaInfluxdb 优点: 1.实时 2.美观 3.能够存储和对比 原理: 1.运行jmeter时会吧数据写入到influxdb 2.influxdb实时存储执行的结果 3.grafana链接.influxd…

基于 Flexbox 的纯 CSS 框架:兼容性好、文档丰富 | 开源日报 No.232

jgthms/bulma Stars: 48.3k License: MIT bulma 是基于 Flexbox 的现代 CSS 框架。 基于 Flexbox 技术。提供快速安装方式,支持 NPM、Yarn 和 Bower。仅包含 CSS 文件,没有 JavaScript 部分。兼容性良好,在主流浏览器上运行良好。提供丰富的…

工作中常用的5种加密算法

背景 最近,项目中做了一些安全性要求的整改。而加密是使用过程中常用的手段之一。这里简单的整理下,希望对小伙伴有帮助。 使用场景 加密是一种将原始信息(明文)转换成难以被直接理解的形式(密文)的过程…

信息收集

信息收集 域名的相关知识 域名的技术指的是一个域名由多少级组成,域名的各个级别被“.”分开,简而言之,有多少个点就是几级域名 顶级域名:.com(商)、.edu(教)、.gov(政)、.mil(军) 一级域名:qq.com 二级域名&#xf…

Python--容器、面向对象

一、容器类型(下) 重点学习容器的定义 常用操作的建议 跟着课堂把代码写一遍即可,混个脸熟,后面现用现查 增、删、改、查:重点掌握 查 字符串、元组:只能查,不能改 1.1 字符串str 1.1.1 字符串基本语法 1.1.2 字…

外呼系统出海注意事项

外呼系统在出海过程中需要注意多个方面,以确保系统的有效运行和合规性。以下是一些关键的注意事项: 一、市场调研与目标定位: 在出海前,深入调研目标市场的行业趋势、消费者偏好、文化背景和竞争态势。这有助于企业更好地了解市场…

基于麻雀搜索算法-BP神经网络SSA-BP回归预测

文章目录 效果一览文章概述订阅专栏只能获取一份代码部分源码参考资料效果一览 文章概述 基于麻雀搜索算法-BP神经网络SSA-BP回归预测 订阅专栏只能获取一份代码 部分源码 %------

几种Python处理Excel数据的方法!

第一种方法: 电子表格格式 我们在日常工作中常常见到各种后缀的电子表格,例如最常见的xlsx以及较为常见的csv、xls等格式的表格。同样是电子表格,它们之间有什么区别吗? • xls为Excel早期表格格式。 xls格式是Excel2003版本及…

TDengineGUI无法连接TDengine

可能是TDengineGUI本身的问题,直接下载可执行文件即可 下载地址:Release 1.0.3 ericyangpan/TDengineGUI (github.com) 还有可能是你的6041端口没开注意检查 可在TDengine文件夹下直接执行 systemctl start taosadapter 也可以点击 taosadapter.exe …

管理者如何在团队里讨论敏感话题

在团队中处理不便讨论的敏感话题可能会令人不适,但如果无视问题,它们会不知不觉地积聚起来,影响士气。 随着团队地理上越来越分散以及线上沟通增多,感知到团队间的不适或提出敏感话题变得更加困难。但是,忽略这些难以…

企业组网的作用有哪些?SD-WAN有什么优势?

在信息化的时代,企业组网建设逐渐成为提升企业竞争力、实现业务高效运行的关键,它能够为企业在信息传输、资源共享、远程办公等方面提供强大的支持。接下来,本文为大家详细介绍企业网络组网的意义,以及为大家推荐热门的网络解决方…

JVM (Micrometer)监控SpringBoot(AWS EKS版)

问题 怎样使用JVM (Micrometer)面板&#xff0c;监控Spring&#xff1f;这里不涉及Prometheus和Grafana&#xff0c;重点介绍与Micrometer与Springboot&#xff0c;k8s怎样集成。 pom.xml 引入依赖&#xff0c;如下&#xff1a; <properties><micrometer.version&…

【缓存服务】⭐️自定义实现一个简易的数据缓存

目录 &#x1f378;前言 &#x1f37b;手写缓存服务 &#xff08;1&#xff09;缓存实体类 &#xff08;2&#xff09;缓存工具类 &#xff08;3&#xff09;测试缓存服务 &#x1f377;已有的缓存工具 &#x1f379;章末 &#x1f378;前言 俗话说 有轮子不用 就是玩 开个…
最新文章