发新帖本帖赏金 20.00元(功能说明)我要提问
返回列表
打印

来自chat gpt对新手的答疑解惑

[复制链接]
439|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 王小琪 于 2023-3-6 22:27 编辑

什么叫新手,通常会很迷茫,我从哪里来,要到哪里去。下面我整理了一些来自遥远的chat gpt的一些回答,希望可以帮助大家解决一定的疑问。
问题如下:
1、如何学习C语言
2、能否推荐几本学习C语言的书籍
3、用C语言代码点亮一个LED
4、使用STM32单片机点亮一个LED
5、如何学习STM32
6、推荐下学习单片机的路径
7、如何学习模电
8、如何学习数电
9、推荐几本学习模电的书籍
10、推荐基本学习数电的书籍

1、如何学习C语言

2、能否推荐几本学习C语言的书籍

3、用C语言代码点亮一个LED

4、使用STM32单片机点亮一个LED

5、如何学习STM32

6、推荐下学习单片机的路径

7、如何学习模电

8、如何学习数电

9、推荐几本学习模电的书籍

10、推荐基本学习数电的书籍


说一下我的整个使用感受
1、整个测试下来,有一定的错误的辩识率,譬如我把“几本”打成“基本”,它也能读懂我的意思。
2、很多答案可以说是正确的废话,但是对于初学者来说,不正需要这些基础的正确的答案来打好基础吗,我可以说,这里的回答比所有论坛上80%的答案都要优秀,可以说是升级的百度,至少你不用画那么多时间去辨别哪些是粪坑,哪些是金子。这不禁让我更加期待百度本月16号推出的文心一言,毕竟更适合国人的风格。
3、竟然可以写代码,虽然只是一个简单的点灯的程序,但arduino和STM32的都写出来了,据说chat gpt代码水平都达到了谷歌中级工程师的水平,我等这种渣渣工程师顿感压力山大。
4、很大程度上你能收到什么回答,取决于你的提问方式,明确的有目的性的优秀的问题,也会得到更加优秀的回答。我提的几个问题,只能说非常初级,提的不够聪明。归根结底chat gpt只是一个工具,就好像同样是百度,有的人就可以搜到想要的任何信息,有的人只能被骗,道理是一样的。
总而言之,之前就对chat gpt很感兴趣,今天试了一下,感觉还是很不错的,大家也可以在楼下留言,如果有遇到有趣的问题,也可以看看会收获到什么有趣的答案。













使用特权

评论回复

相关帖子

沙发
王小琪|  楼主 | 2023-3-6 22:24 | 只看该作者
本帖最后由 王小琪 于 2023-3-6 22:26 编辑

这是我要的一个iic例程
以下是一个IIC通信的C语言例程,用于在STM32F103C8T6开发板上通过IIC总线读取温度传感器的数据:

#include "stm32f10x.h"

#define I2C_SPEED 100000 // I2C总线速度为100kHz
#define I2C_TIMEOUT 10000 // I2C操作超时时间为10ms

#define TEMP_SENSOR_ADDR 0x48 // 温度传感器的I2C地址为0x48

void I2C1_Init(void);
void I2C1_Start(void);
void I2C1_Stop(void);
void I2C1_WriteByte(uint8_t data);
uint8_t I2C1_ReadByte(uint8_t ack);
uint8_t I2C1_ReadRegister(uint8_t reg);

int main(void)
{
  uint8_t temp;

  I2C1_Init(); // 初始化I2C1

  temp = I2C1_ReadRegister(0x00); // 读取温度传感器的寄存器0x00的值
  // 处理温度值

  while (1)
  {
    // 循环读取温度传感器的数据
  }
}

void I2C1_Init(void)
{
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); // 使能I2C1时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能GPIOB时钟

  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure); // 配置GPIOB6和GPIOB7为开漏输出,复用功能,速度为50MHz

  I2C_InitTypeDef I2C_InitStructure;
  I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
  I2C_InitStructure.I2C_OwnAddress1 = 0x00;
  I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_InitStructure.I2C_ClockSpeed = I2C_SPEED;
  I2C_Init(I2C1, &I2C_InitStructure); // 配置I2C1

  I2C_Cmd(I2C1, ENABLE); // 使能I2C1
}

void I2C1_Start(void)
{
  I2C_GenerateSTART(I2C1, ENABLE); // 产生I2C起始信号
  while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)); // 等待I2C事件发生
}

void I2C1_Stop(void)
{
  I2C_GenerateSTOP(I2C1, ENABLE); // 产生I2C停止信号
  while (I2C_GetFlagStatus(I2C1, I2C_FLAG_STOPF)); // 等待I2C停止信号发送完成
}

void I2C1_WriteByte(uint8_t data)
{
  I2C_SendData(I2C1, data); // 发送数据
  while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); // 等待数据发送完成
}

uint8_t I2C1_ReadByte(uint8_t ack)
{
  if (ack)
    I2C_AcknowledgeConfig(I2C1, ENABLE); // 使能应答
  else
    I2C_AcknowledgeConfig(I2C1, DISABLE); // 禁止应答

  while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED)); // 等待数据接收完成

  uint8_t data = I2C_ReceiveData(I2C1); // 读取数据

  return data;
}

uint8_t I2C1_ReadRegister(uint8_t reg)
{
  I2C1_Start(); // 发送起始信号
  I2C1_WriteByte(TEMP_SENSOR_ADDR << 1); // 发送从机地址
  I2C1_WriteByte(reg); // 发送寄存器地址
  I2C1_Start(); // 发送起始信号
  I2C1_WriteByte((TEMP_SENSOR_ADDR << 1) | 0x01); // 发送从机地址,读取数据
  uint8_t data = I2C1_ReadByte(0); // 读取数据,禁止应答
  I2C1_Stop(); // 发送停止信号

  return data;
}

使用特权

评论回复

打赏榜单

21ic小管家 打赏了 20.00 元 2023-04-17

板凳
cqb609902345| | 2023-3-14 18:33 | 只看该作者
总结的中肯,需要自行判断,确是不错的工具

使用特权

评论回复
地板
Siderlee| | 2023-3-24 20:08 | 只看该作者
谭浩强 老师  怎么什么书都出

使用特权

评论回复
发新帖 本帖赏金 20.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

227

主题

578

帖子

6

粉丝