00_YH_STM32H743_硬件

本文详细介绍了STM32H743XI微控制器的硬件配置情况,包括LED、按键、USB转串口、RS485、CAN、以太网、WiFi模块及LCD显示等接口的具体设置。

0.本地原理图与软件工程位置

原理图位置:

Y:\baiduyun_download\yehuo_pcb\原理图

软件工程的位置:

Z:\2022-YS\YH_uCOS-III_1

1.LED的GPIO, PB0, PB1, PA3

 2.STM32H743XI的外接晶振25MHZ

3.按键的GPIO,PA0, PC13

4.USB转串口,调试设备用USART1, GPIOA9, GPIOA10

5.RS485和CAN

CAN : PB6 PB5

485: 

6.以太网接口

7.wifi模块

8.LCD模块

9.电路板整体

### STM32 使用 XPT2046 触摸控制器教程 #### 硬件连接 对于使用XPT2046触摸控制器的项目,硬件部分主要涉及STM32开发板与电容式触摸屏模块之间的连接。具体来说,需要确保SPI接口正确连线以便于数据交换[^2]。 - **MISO (Master In Slave Out)**: 接到XPT2046的数据输出引脚。 - **MOSI (Master Out Slave In)**: 连接到XPT2046的数据输入引脚。 - **SCK**: 对应的是时钟信号线,需连至XPT2046的CLK端子。 - **CS/SSN (Chip Select / Slave Select Notation)**: 控制芯片的选择状态,低电平有效,通常通过GPIO来管理此功能。 - **IRQ (Interrupt Request, 可选)**: 如果支持中断,则可以用来接收来自触控事件的通知;不过很多情况下并不一定需要用到这个特性。 #### 初始化设置 初始化阶段主要是针对SPI外设以及必要的GPIO配置来进行编程设定。这一步骤确保了后续能够顺利地发送命令并获取坐标信息。 ```c #include "stm32f1xx_hal.h" // 定义 SPI 设备句柄和其他变量... extern SPI_HandleTypeDef hspi1; void MX_SPI1_Init(void){ /* USER CODE BEGIN SPI1_Init 0 */ /* USER CODE END SPI1_Init 0 */ /* USER CODE BEGIN SPI1_Init 1 */ /* USER CODE END SPI1_Init 1 */ hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; // 设置为主模式 hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi1.Init.CRCPolynomial = 7; hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; if (HAL_SPI_Init(&hspi1) != HAL_OK) { Error_Handler(); } } ``` 上述代码展示了如何利用CubeMX工具生成的基础框架下完成SPI1接口的基本参数定义和初始化过程。 #### 获取触摸点坐标 一旦完成了前期准备工作之后就可以编写函数去读取当前是否有新的触摸发生及其对应的屏幕位置了: ```c #define CS_PIN GPIO_PIN_X // 替换成实际使用的片选引脚编号 uint16_t Read_Touch_ADC(uint8_t channel){ uint8_t cmd[2]; uint16_t result=0; HAL_GPIO_WritePin(GPIOA, CS_PIN , GPIO_PIN_RESET); //拉低片选使能 switch(channel){ case CHAN_XH://通道选择指令 cmd[0]=CMD_READ_X_High|CMD_START_CONV;//高字节先传 break; case CHAN_YH: cmd[0]=CMD_READ_Y_High|CMD_START_CONV; break; default : return 0xFFFF; } HAL_SPI_Transmit(&hspi1,(uint8_t*)cmd,sizeof(cmd),1); HAL_Delay(1); HAL_SPI_Receive(&hspi1,&result,sizeof(result),1); HAL_GPIO_WritePin(GPIOA, CS_PIN , GPIO_PIN_SET ); //结束传输后恢复片选 return ((result&0x0FFF)>>4)|(result<<8)&0xFFF ;//调整返回值范围适应12bit ADC精度 } int main(){ int x,y; while(true){ x=Read_Touch_ADC(CHAN_XH); y=Read_Touch_ADC(CHAN_YH); printf("Touch Position:(%d,%d)\r\n",x,y); delay_ms(500); } } ``` 这段程序片段实现了对指定模拟量输入信道(即X轴或Y轴方向上的电压变化)执行一次完整的AD转换操作,并最终得到相应的数字化表示形式——也就是我们所说的“触摸点”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值