<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=STM32_HAL_API</id>
	<title>STM32 HAL API - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=STM32_HAL_API"/>
	<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=STM32_HAL_API&amp;action=history"/>
	<updated>2026-06-07T20:01:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://w.electrodragon.com/w/index.php?title=STM32_HAL_API&amp;diff=30129&amp;oldid=prev</id>
		<title>Chao: /* Example 2 */</title>
		<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=STM32_HAL_API&amp;diff=30129&amp;oldid=prev"/>
		<updated>2021-03-08T16:30:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Example 2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== GPIO ==&lt;br /&gt;
* HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);&lt;br /&gt;
* HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Delay ==&lt;br /&gt;
* HAL_Delay(100);&lt;br /&gt;
&lt;br /&gt;
== I2C ==&lt;br /&gt;
* HAL_I2C_Mem_Write&lt;br /&gt;
* HAL_I2C_Mem_Read&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HAL_I2C_Mem_Write(&amp;amp;hbus_i2c1, DevAddr, Reg, I2C_MEMADD_SIZE_8BIT, pData, Length, BUS_I2C1_POLL_TIMEOUT)&lt;br /&gt;
&lt;br /&gt;
* I2C_MEMADD_SIZE_8BIT 固定方式&lt;br /&gt;
* BUS_I2C1_POLL_TIMEOUT = 0x1000U&lt;br /&gt;
* uint8_t * const pICRef&lt;br /&gt;
* pICRef Pointeron a uint8_t used to return the ST25DV ID.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* HAL_I2C_Mem_Read(&amp;amp;I2C2, 0x0017, Reg, I2C_MEMADD_SIZE_8BIT, pData, Length, 0x1000U) &lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
 #define ADDR_24LCxx_Read 0xA1&lt;br /&gt;
 #define BufferSize 0x100&amp;lt;br&amp;gt;&lt;br /&gt;
 uint8_t ReadBuffer[BufferSize];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HAL_I2C_Mem_Read(&amp;amp;hi2c1, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,ReadBuffer,BufferSize, 0x10);&lt;br /&gt;
* 第一个参数为I2C操作句柄。&lt;br /&gt;
* 第二个参数为E2PROM的写操作设备地址。&lt;br /&gt;
* 第三个参数为内存地址，&lt;br /&gt;
* 第二个参数为内存地址长度，E2PROM内存长度为8bit&lt;br /&gt;
* 第四个参数为数据缓存的起始地址，&lt;br /&gt;
* 第五个参数为传输数据的大小，&lt;br /&gt;
* 第六个参数为操作超时时间。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 HAL_StatusTypeDef HAL_I2C_Mem_Read  ( I2C_HandleTypeDef *  hi2c,  &lt;br /&gt;
  uint16_t  DevAddress,  &lt;br /&gt;
  uint16_t  MemAddress,  &lt;br /&gt;
  uint16_t  MemAddSize,  &lt;br /&gt;
  uint8_t *  pData,  &lt;br /&gt;
  uint16_t  Size,  &lt;br /&gt;
  uint32_t  Timeout  &lt;br /&gt;
  )   &lt;br /&gt;
Read an amount of data in blocking mode from a specific memory address. &lt;br /&gt;
Parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
* hi2c Pointer to a I2C_HandleTypeDef structure that contains the configuration information for the specified I2C.    &lt;br /&gt;
* DevAddress Target device address: The device 7 bits address value in datasheet must be shifted to the left before calling the interface    &lt;br /&gt;
* MemAddress Internal memory address    &lt;br /&gt;
* MemAddSize Size of internal memory address    &lt;br /&gt;
* pData Pointer to data buffer    &lt;br /&gt;
* Size Amount of data to be sent    &lt;br /&gt;
* Timeout Timeout duration  &lt;br /&gt;
&lt;br /&gt;
AT24C02&lt;br /&gt;
* HAL_I2C_Mem_Write(&amp;amp;hi2c1, 0XA0,1,I2C_MEMADD_SIZE_8BIT,sbuf,1,0xff);&lt;br /&gt;
* HAL_Delay(5);&lt;br /&gt;
* HAL_I2C_Mem_Read(&amp;amp;hi2c1, 0xA0, 1, I2C_MEMADD_SIZE_8BIT, rbuf, 1,0xfff);		&lt;br /&gt;
* HAL_Delay(1000);&lt;br /&gt;
&lt;br /&gt;
HAL_I2C_Mem_Read(&lt;br /&gt;
* I2C_HandleTypeDef *hi2c, // 使用的 I2C 模块的 Handle 的指针&lt;br /&gt;
* uint16_t DevAddress,     // I2C 器件的地址，这里是 24C02 的地址 0xA0&lt;br /&gt;
* uint16_t MemAddress,     // 存储器内部地址&lt;br /&gt;
* uint16_t MemAddSize,     // 存储器内部地址位数 8BIT or 16BIT ?&lt;br /&gt;
* uint8_t *pData,          // 接收数据缓冲区指针&lt;br /&gt;
* uint16_t Size,           // 接收数据长度=&lt;br /&gt;
* uint32_t Timeout         // 超时设置&lt;br /&gt;
);&lt;br /&gt;
[[category: STM32 SDK]]&lt;/div&gt;</summary>
		<author><name>Chao</name></author>
	</entry>
</feed>