OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 128|回复: 4

求stm32f303的硬件iic参考代码,标准库的。

[复制链接]

3

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
510
金钱
510
注册时间
2016-12-1
在线时间
106 小时
发表于 2024-11-9 10:06:37 | 显示全部楼层 |阅读模式
5金钱
请问谁有stm32f303的硬件iic通讯代码,发现跟是F1和F4的IIC代码不一样,我用的标准库。

最佳答案

查看完整内容[请看2#楼]

写过一个TM1730的,你看着参考吧 uint8_t TM1730_ReadBytes(uint8_t addr, uint8_t *pdata, uint16_t count) { uint32_t i = 0, errcnt = 0; do { errcnt++; if (errcnt > SystemCoreClock/1000) goto error; } while (I2C_GetFlagStatus(TM1730_I2C, I2C_FLAG_BUSY)); /* Send START condition */ I2C_GenerateSTART(TM1730_I2C, ENABLE); errcnt = 0; do { errcnt++; if (errcnt > ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4588
金钱
4588
注册时间
2015-1-10
在线时间
574 小时
发表于 2024-11-9 10:06:38 | 显示全部楼层
写过一个TM1730的,你看着参考吧
uint8_t TM1730_ReadBytes(uint8_t addr, uint8_t *pdata, uint16_t count)
{
        uint32_t i = 0, errcnt = 0;
       
        do {
                errcnt++;
                if (errcnt > SystemCoreClock/1000)
                        goto error;
        } while (I2C_GetFlagStatus(TM1730_I2C, I2C_FLAG_BUSY));

        /* Send START condition */     
        I2C_GenerateSTART(TM1730_I2C, ENABLE);
       
        errcnt = 0;
        do {
                errcnt++;
                if (errcnt > SystemCoreClock/1000)
                        goto error;
        } while (!I2C_CheckEvent(TM1730_I2C, I2C_EVENT_MASTER_MODE_SELECT));
  /* Send address for write */
        I2C_Send7bitAddress(TM1730_I2C, TM1730_SLAVEADDR, I2C_Direction_Transmitter);
       
        errcnt = 0;
        do {
                errcnt++;
                if (errcnt > SystemCoreClock/1000)
                        goto error;
        } while (!I2C_CheckEvent(TM1730_I2C, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED)); /* EV7 */
       
        I2C_SendData(TM1730_I2C, addr);
       
        errcnt = 0;
        do {
                errcnt++;
                if (errcnt > SystemCoreClock/1000)
                        goto error;
        } while (!I2C_CheckEvent(TM1730_I2C, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
       
        I2C_GenerateSTART(TM1730_I2C, ENABLE);
       
        errcnt = 0;
        do {
                errcnt++;
                if (errcnt > SystemCoreClock/1000)
                        goto error;
        } while (!I2C_CheckEvent(TM1730_I2C, I2C_EVENT_MASTER_MODE_SELECT));
       
        /* Send address for read */
        I2C_Send7bitAddress(TM1730_I2C, TM1730_SLAVEADDR, I2C_Direction_Receiver);
       
        errcnt = 0;
        do {
                errcnt++;
                if (errcnt > SystemCoreClock/1000)
                        goto error;
        } while (!I2C_CheckEvent(TM1730_I2C, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED)); /* EV7 */
       
        for (i = 0; i < count - 1; i++) {
                I2C_AcknowledgeConfig(TM1730_I2C, ENABLE);   
               
                errcnt = 0;
                do {
                        errcnt++;
                        if (errcnt > SystemCoreClock/1000)
                                goto error;
                } while (I2C_GetFlagStatus(TM1730_I2C, I2C_FLAG_RXNE) == RESET);
               
                *pdata++ = I2C_ReceiveData(TM1730_I2C);
        }
       
        I2C_AcknowledgeConfig(TM1730_I2C, DISABLE);   
       
        errcnt = 0;
        do {
                errcnt++;
                if (errcnt > SystemCoreClock/1000)
                        goto error;
        } while (I2C_GetFlagStatus(TM1730_I2C, I2C_FLAG_RXNE) == RESET);
       
        *pdata = I2C_ReceiveData(TM1730_I2C);
       
        /* Send STOP condition */
        I2C_GenerateSTOP(TM1730_I2C, ENABLE);

        return STATUS_OK;
       
        error:
        I2C_SoftwareResetCmd(TM1730_I2C, ENABLE);
        return STATUS_FAIL;
}
回复

使用道具 举报

21

主题

86

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2017-3-6
在线时间
64 小时
发表于 2024-11-10 09:18:47 | 显示全部楼层
或许可以试试,STM32CubeMX工具直接生成
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12692
金钱
12692
注册时间
2012-11-26
在线时间
3711 小时
发表于 2024-11-10 11:12:28 | 显示全部楼层
标准库的应该很少见    hal库的应该不少
回复

使用道具 举报

3

主题

38

帖子

0

精华

高级会员

Rank: 4

积分
510
金钱
510
注册时间
2016-12-1
在线时间
106 小时
 楼主| 发表于 2024-11-13 08:37:01 | 显示全部楼层
谢谢各位
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表