tx6-prototype原型

本文介绍了一个简单的JavaScript代码示例,展示了如何为数组原型添加自定义方法,并通过alert展示了一条消息。这种方法可以用来扩展JavaScript中数组的功能。
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

</body>
</html>
<script>
    Array.prototype.run = function () {
        alert("酸辣土豆丝");
    }
    var arr = [];
    arr.run();
</script>
### STM32Cube MX配置两块STM32F407VET6 MCU(I2C通信 + USART2打印功能) #### 1. **主设备配置(Master)** | 模块 | 配置项 | 参数值 | |------|--------|--------| | **I2C1** | Mode | I2C | | | Clock Speed | 100000 Hz | | | Duty Cycle | 16:9 | | **USART2** | Mode | Asynchronous | | | Baud Rate | 115200 | | | Word Length | 8 Bits | | | Parity | None | | | Stop Bits | 1 | | **GPIO** | PB6 (SCL) | I2C1_SCL, Pull-up | | | PB7 (SDA) | I2C1_SDA, Pull-up | | | PA2 (USART_TX) | USART2_TX, Alternate Function Push-Pull | | | PA3 (USART_RX) | USART2_RX, Input (上拉) | | | PA7 (LED) | GPIO_Output, Push-Pull | | **NVIC** | I2C1 event interrupt | ✓ Enabled | | | USART2 global interrupt | ✓ Enabled | #### 2. **从设备配置(Slave)** | 模块 | 配置项 | 参数值 | |------|--------|--------| | **I2C1** | Mode | I2C | | | Own Address 1 | 0x0A (7-bit) | | | Addressing Mode | 7-bit | | **USART2** | Mode | Asynchronous | | | Baud Rate | 115200 | | | Word Length | 8 Bits | | | Parity | None | | | Stop Bits | 1 | | **GPIO** | PB6 (SCL) | I2C1_SCL, Pull-up | | | PB7 (SDA) | I2C1_SDA, Pull-up | | | PA2 (USART_TX) | USART2_TX, Alternate Function Push-Pull | | | PA3 (USART_RX) | USART2_RX, Input (上拉) | | | PA7 (LED) | GPIO_Output, Push-Pull | | **NVIC** | I2C1 event interrupt | ✓ Enabled | | | USART2 global interrupt | ✓ Enabled | > **关键配置说明**: > 1. **USART2引脚分配**:PA2作为TX,PA3作为RX(F4系列默认引脚) > 2. **时钟配置**:需确保系统时钟和APB1总线时钟一致(USART2挂载在APB1) > 3. **内部上拉**:所有I2C和USART RX引脚启用内部上拉 > 4. **串口中断**:必须开启USART2全局中断以实现非阻塞传输 --- ### 集成USART打印的代码实现 #### 主设备代码(Master) ```c // 重定向printf到USART2 #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch; } int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init(); MX_USART2_UART_Init(); printf("I2C Master Initialized\r\n"); uint8_t txData = 0x55; uint8_t rxData; while (1) { if (HAL_I2C_Master_Transmit(&hi2c1, 0x0A<<1, &txData, 1, 100) == HAL_OK) { if (HAL_I2C_Master_Receive(&hi2c1, 0x0A<<1, &rxData, 1, 100) == HAL_OK) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET); printf("I2C Comm Success! Received: 0x%X\r\n", rxData); } } else { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET); printf("Comm Failed. Retrying...\r\n"); } HAL_Delay(500); } } ``` #### 从设备代码(Slave) ```c // 同上添加printf重定向 uint8_t rxBuffer; void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) { uint8_t txData = rxBuffer + 1; HAL_I2C_Slave_Transmit(&hi2c1, &txData, 1, 100); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET); printf("Received: 0x%X, Sent: 0x%X\r\n", rxBuffer, txData); } int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init(); MX_USART2_UART_Init(); printf("I2C Slave (0x0A) Ready\r\n"); HAL_I2C_Slave_Receive_IT(&hi2c1, &rxBuffer, 1); while (1) { // 可添加其他任务 } } ``` --- ### 完整硬件连接示意图 ```plaintext 主设备 STM32F407VET6 从设备 STM32F407VET6 PC PB6 (SCL) ----------- PB6 (SCL) PB7 (SDA) ----------- PB7 (SDA) PA2 (TX) ----------------------------> USB转串口RX PA3 (RX) <--------------------------- USB转串口TX PA2 (TX) ----------------------------> USB转串口RX [从机单独连接] GND ----------------- GND ------------ GND PA7 ---| LED | PA7 ---| LED | ``` > **调试要点**: > 1. 使用`STM32CubeProgrammer`或`ST-LINK`烧录程序 > 2. PC端使用串口助手(波特率115200)查看打印信息 > 3. 若打印乱码,检查时钟配置(尤其APB1频率) > 4. LED亮起且串口输出成功数据表明全系统工作正常 --- ### CubeMX配置步骤总结 1. **引脚分配**: - 激活I2C1(PB6/PB7) - 激活USART2(PA2/PA3) - 配置PA7为GPIO_Output 2. **参数设置**: ```mermaid graph TD A[I2C1] --> B[Mode=I2C] A --> C[Clock=100kHz] D[USART2] --> E[Baud=115200] D --> F[Word=8Bits] ``` 3. **NVIC配置**: - 使能I2C1事件中断 - 使能USART2全局中断 4. **生成代码**: - 工具链选择MDK-ARM或STM32CubeIDE - 勾选"生成外设初始化调用" ---根据你这个方案来增添主机与从机需要的代码
最新发布
10-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值