stm32f1 调试进不了主函数main

昨天发现这个问题, 在网上搜索资料, 主要解决方案有, 微库和printf 相关重定义,

都实验过, 不起作用,感觉莫名其妙。

没办法找到以前运行正常的程序对比, 应该是串口问题。

开发板连接电脑的串口助手,此时重启开发板, 会很大的概率进不了main.

-- 记录一下。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32 微控制器可以轻松地驱动 93LC56B 这样的 EEPROM 芯片,因为它们都支持 I²C 总线通信。下面是如何使用 STM32 来控制 93LC56B 的步骤: ### 1. 硬件连接 首先,你需要将 93LC56B 和 STM32 相连: - **SCL (Clock)**:连接到 STM32 的某个 I2C 的 SCL 引脚。 - **SDA (Data)**:连接到 STM32 的某个 I2C 的 SDA 引脚。 - **VCC**: 93LC56B 的电源应该连接到 STM32 的 3.3V 或者 5V 电源。 - **GND**: 地线连接到 STM32 的 GND。 ### 2. 配置 STM32 接下来,在你的 STM32 项目中设置 I2C 模块。以 STM32F1xx 系列为例: #### 初始化 I2C ```c #include "stm32f1xx_hal.h" void I2C_Init(I2C_HandleTypeDef *hi2c) { __HAL_RCC_I2Cx_CLK_ENABLE(); hi2c->Instance = I2Cx; hi2c->Init.ClockSpeed = I2C_CLOCK_SPEED; // 设置适当的频率 hi2c->Init.OwnAddress1 = ADDR_93LC56B; // 设置地址 hi2c->Init.AddressingMode = I2C_ADDRESSING_MODE_7BIT; hi2c->Init.DualAddressMode = DISABLE; hi2c->Init.OwnAddress2 = OWN_ADDRESS2; hi2c->Init.GeneralCallMode = ENABLE; if (HAL_I2C_Init(hi2c) != HAL_OK) Error_Handler(); } // 主函数中初始化 I2C int main(void) { I2C_HandleTypeDef hi2c; I2C_Init(&hi2c); while(1) { // 你的主循环在这里 } } ``` #### 发送命令给 93LC56B 使用 `HAL_I2C_Mem_Write` 函数发送命令或数据到 93LC56B: ```c uint8_t data[2]; data = ADDRESS_WRITE; // 写命令 data = PAGE_NUMBER; // 分区号 if(HAL_I2C_Master_Transmit_IT(&hi2c, ADDR_93LC56B, (uint8_t *)data, 2, 100) == HAL_OK) { // 成功发送数据 } else { // 错误处理 } ``` ### 3. 读取数据 同样,你可以使用 `HAL_I2C_Mem_Read` 函数从 93LC56B 读取数据: ```c uint8_t read_data; HAL_I2C_Master_Receive(&hi2c, ADDR_93LC56B, (uint8_t*)read_data, 2, 100); // 处理读取的数据 ``` ### 4. 其他功能 除了基本的读写操作之外,你还可以对 93LC56B 进行更高级的操作,比如擦除分区、更新校验码等,具体取决于你的应用程序需求。 ### 实践建议 为了确保正确性和稳定性,在实际应用前,务必充分测试与调试 I2C 接口的配置以及数据交互流程。此外,检查 STM32 和 93LC56B 的电压匹配情况也很重要,确保两者之间不会因电压差异导致异常情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值