寒假实训笔记day02——STM32-GPIO口

这篇博客主要介绍了STM32的GPIO口,包括其作为单片机与外界交互窗口的作用,以及GPIO口的四大模式:通用推挽输出、通用开漏输出、复用推挽输出和复用开漏输出。此外,还讲解了不同模式的特点,如推挽输出能输出0和1,而开漏输出仅能输出0,并提到了上拉和下拉输入模式以及浮空和模拟输入模式的应用。
摘要由CSDN通过智能技术生成

GPIO口

GPIO口作用
什么是GPIO?作用是什么?

IO—— →GPIO口;作用:单片机与外界进行信息交换的窗口

STM32的GPIO口
命名与数量

PH0  PH1  外部晶振
H:端口号        
01:管脚号
端口:A-I(9个)
管脚:0~159*16=144

GPIO口数量:51个 PA端口~PC端口+PD2+PH1、PH0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PN532是一款常用的NFC读写芯片,支持ISO14443A/B、FeliCa以及ISO18092标准。在STM32中使用PN532可以实现NFC功能,下面是使用PN532的基本步骤: 1. 硬件连接:将PN532的SDA、SCK、MISO、MOSI、NSS、IRQ、RST引脚分别连接到STM32的对应引脚,同时将PN532的VCC和GND引脚连接到STM32的电源和地。 2. 初始化:使用SPI总线与PN532进行通信,并初始化PN532芯片,可以使用以下代码: ```C void PN532_Init(void) { HAL_GPIO_WritePin(PN532_CS_GPIO_Port, PN532_CS_Pin, GPIO_PIN_RESET); HAL_Delay(100); PN532_Reset(); HAL_Delay(100); PN532_Wakeup(); HAL_Delay(100); } void PN532_Reset(void) { HAL_GPIO_WritePin(PN532_RST_GPIO_Port, PN532_RST_Pin, GPIO_PIN_RESET); HAL_Delay(10); HAL_GPIO_WritePin(PN532_RST_GPIO_Port, PN532_RST_Pin, GPIO_PIN_SET); HAL_Delay(10); } void PN532_Wakeup(void) { uint8_t cmd[] = {0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; HAL_SPI_Transmit(&hspi1, cmd, sizeof(cmd), 100); } ``` 3. 发送命令:PN532可以执行多种命令,如初始化、读写卡片等,可以使用以下代码发送命令: ```C uint8_t PN532_SendCmd(uint8_t *cmd, uint8_t cmdlen, uint8_t *response, uint8_t resplen) { HAL_GPIO_WritePin(PN532_CS_GPIO_Port, PN532_CS_Pin, GPIO_PIN_RESET); HAL_Delay(10); HAL_SPI_Transmit(&hspi1, cmd, cmdlen, 100); HAL_Delay(10); HAL_SPI_Receive(&hspi1, response, resplen, 100); HAL_Delay(10); HAL_GPIO_WritePin(PN532_CS_GPIO_Port, PN532_CS_Pin, GPIO_PIN_SET); return response[0]; } ``` 4. 读写卡片:PN532可以读写ISO14443A/B、FeliCa以及ISO18092标准的卡片,可以使用以下代码读写卡片: ```C uint8_t PN532_ReadCard(uint8_t *cardData, uint8_t *cardLen) { uint8_t cmd[] = {0xD4, 0x4A, 0x01, 0x00}; uint8_t response[32]; uint8_t responseLen = 0; PN532_SendCmd(cmd, sizeof(cmd), response, sizeof(response)); if (response[0] != 0x01) { return 0; } responseLen = response[1] - 1; memcpy(cardData, &response[2], responseLen); *cardLen = responseLen; return 1; } ``` 以上代码仅为参考,具体使用时需要根据实际情况进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值