- 主题:最近在用chatgpt给at32写代码
- 贴个刚实验过的结果。这个是stm8的。
 stm8的sdk极其简单,基本上是需要直接操作寄存器的。所以这里我把寄存器定义丢给它,要求它生成一个我想要的反复adc读2个通道的代码。
 结果这个代码99.9%正确。
 只有几个小问题要改下。一个是uart初始化成9600,但注释写成了115200。另一个是printf这里要修正下,需要include<stdio.h>并且要避让下putchar,或者把putchar的返回类型改正确后直接printf。
 
 这2个问题都是无伤大雅的小改动,但这一堆的寄存器让我看手册我是看的头大,懒得看了让它试试,没想到上机调试一次成功....
 
 当然这个例子可能网上存在一个现成的能work的版本,不过讲真我在chatgpt之前也是google了好几轮了。单通道的有,扫描模式的有,但single模式读2个通道的至少我没看到过。
 
 ================================
 ## You
 你知道stm8嘛?我需要用stm8的adc反复读2个通道的数据,你能给我一个最简单的example嘛?
 
 ## ChatGPT
 抱歉,我不能提供特定的STM8 ADC示例代码,因为STM8的ADC使用方式取决于具体的STM8系列和库,比如STM8S系列、STM8L系列、使用的是SPL库还是其他库。
 
 一般来说,ADC的使用步骤大致如下:
 
 1. 初始化ADC:配置ADC的转换速率、分辨率、数据对齐等属性。
 2
 
 ## You
 具体型号是STM8S003,不使用库直接操作寄存器
 
 ## ChatGPT
 STM8S003 的 ADC 初始化和通道读取可以通过直接操作寄存器实现。以下是一个简单的例子,此示例反复读取两个通道(如ADC通道 2 和 3)的数据。
 
 注意:这段代码需要您在实际硬件上测试,并根据实际应用环境进行调整。
 
 ```c
 #include "stm8s.h"
 
 void adc_init(void) {
 /* 使能 ADC 时钟 */
 CLK->PCKENR2 |= CLK_PCKENR2_ADC;
 
 /* 配置 ADC 的分辨率、数据对齐方式等 */
 ADC1->CR1 |= ADC1_CR1_ADON;  // Turn on the ADC1
 ADC1->CR1 |= ADC1_CR1_CONT;  // Set the ADC1 to continuous mode
 ADC1->CR2 |= ADC1_CR2_ALIGN; // Right alignment
 
 /* ADC1 prescaler设置 */
 ADC1->CR3 |= ADC1_CR3_SMTP1; // fmaster/18
 }
 
 uint16_t adc_read(uint8_t channel) {
 /* 设置 ADC1 的转换通道 */
 ADC1->CSR &= 0x07; // Clear the old channel selection
 ADC1->CSR |= channel; // Set the new channel
 
 ADC1->CR1 |= ADC1_CR1_ADON; // Start conversion
 
 while (!(ADC1->CSR & ADC1_CSR_EOC)); // Wait for end of conversion
 ADC1->CSR &= ~ADC1_CSR_EOC; // Clear the end of conversion flag
 
 return ADC1->DRH << 2 | ADC1->DRL; // Return the ADC value
 }
 
 void main(void) {
 adc_init();
 uint16_t value_channel2, value_channel3;
 
 while(1) {
 value_channel2 = adc_read(2);  // read ADC channel 2
 value_channel3 = adc_read(3);  // read ADC channel 3
 
 // do something with the values
 }
 }
 
 ```
 
 在上述代码中:
 
 - adc_init 函数用于初始化 ADC,包括使能 ADC 时钟,配置 ADC 的分辨率、数据对齐方式等。
 - adc_read 函数用于读取指定通道的 ADC 值。
 
 这只是一个非常基础的例子,没有包括错误处理和优化。在实际使用中,你可能需要根据具体的硬件和应用需求进行调整和优化。
 
 ## You
 这个是stm8的寄存器库,按照这个库写一个用adc读2个通道,然后printf出来不断loop的代码。注意编译环境是sdcc:
 /*
 * Register definitions for STM8S103 (and STM8S003)
 * Still incomplete.
 */
 #ifndef _STH8_H
 #define _STH8_H
 
 
 /* Handy macros for GPIO */
 #define CONCAT(a, b)    a##_##b
 #define PORT(a, b)      CONCAT(a , b)
 
 #define PIN0    (1 << 0)
 #define PIN1    (1 << 1)
 #define PIN2    (1 << 2)
 #define PIN3    (1 << 3)
 #define PIN4    (1 << 4)
 #define PIN5    (1 << 5)
 #define PIN6    (1 << 6)
 #define PIN7    (1 << 7)
 
 /* Register addresses */
 
 /* Clock */
 #define CLK_CKDIVR    *(volatile unsigned char *)0x50C6
 
 /* GPIO */
 #define PA_ODR *(volatile unsigned char *)0x5000
 #define PA_IDR *(volatile unsigned char *)0x5001
 #define PA_DDR *(volatile unsigned char *)0x5002
 #define PA_CR1 *(volatile unsigned char *)0x5003
 #define PA_CR2 *(volatile unsigned char *)0x5004
 
 #define PB_ODR *(volatile unsigned char *)0x5005
 #define PB_IDR *(volatile unsigned char *)0x5006
 #define PB_DDR *(volatile unsigned char *)0x5007
 #define PB_CR1 *(volatile unsigned char *)0x5008
 #define PB_CR2 *(volatile unsigned char *)0x5009
 
 #define PC_ODR *(volatile unsigned char *)0x500A
 #define PC_IDR *(volatile unsigned char *)0x500B
 #define PC_DDR *(volatile unsigned char *)0x500C
 #define PC_CR1 *(volatile unsigned char *)0x500D
 #define PC_CR2 *(volatile unsigned char *)0x500E
 
 #define PD_ODR *(volatile unsigned char *)0x500F
 #define PD_IDR *(volatile unsigned char *)0x5010
 #define PD_DDR *(volatile unsigned char *)0x5011
 #define PD_CR1 *(volatile unsigned char *)0x5012
 #define PD_CR2 *(volatile unsigned char *)0x5013
 
 /* UART */
 #define UART1_SR *(volatile unsigned char *)0x5230
 #define UART1_DR *(volatile unsigned char *)0x5231
 #define UART1_BRR1 *(volatile unsigned char *)0x5232
 #define UART1_BRR2 *(volatile unsigned char *)0x5233
 #define UART1_CR1 *(volatile unsigned char *)0x5234
 #define UART1_CR2 *(volatile unsigned char *)0x5235
 #define UART1_CR3 *(volatile unsigned char *)0x5236
 #define UART1_CR4 *(volatile unsigned char *)0x5237
 #define UART1_CR5 *(volatile unsigned char *)0x5238
 #define UART1_GTR *(volatile unsigned char *)0x5239
 #define UART1_PSCR *(volatile unsigned char *)0x523A
 
 #define UART_SR_TXE (1 << 7)
 #define UART_SR_TC (1 << 6)
 #define UART_SR_RXNE (1 << 5)
 #define UART_SR_IDLE (1 << 4)
 #define UART_SR_OR (1 << 3)
 #define UART_SR_NF (1 << 2)
 #define UART_SR_FE (1 << 1)
 #define UART_SR_PE (1 << 0)
 
 #define UART_CR1_R8 (1 << 7)
 #define UART_CR1_T8 (1 << 6)
 #define UART_CR1_UARTD (1 << 5)
 #define UART_CR1_M (1 << 4)
 #define UART_CR1_WAKE (1 << 3)
 #define UART_CR1_PCEN (1 << 2)
 #define UART_CR1_PS (1 << 1)
 #define UART_CR1_PIEN (1 << 0)
 
 #define UART_CR2_TIEN (1 << 7)
 #define UART_CR2_TCIEN (1 << 6)
 #define UART_CR2_RIEN (1 << 5)
 #define UART_CR2_ILIEN (1 << 4)
 #define UART_CR2_TEN (1 << 3)
 #define UART_CR2_REN (1 << 2)
 #define UART_CR2_RWU (1 << 1)
 #define UART_CR2_SBK (1 << 0)
 
 #define UART_CR3_LINEN (1 << 6)
 #define UART_CR3_STOP2 (1 << 5)
 #define UART_CR3_STOP1 (1 << 4)
 #define UART_CR3_CLKEN (1 << 3)
 #define UART_CR3_CPOL (1 << 2)
 #define UART_CR3_CPHA (1 << 1)
 #define UART_CR3_LBCL (1 << 0)
 
 /* Timers */
 #define TIM1_CR1 *(volatile unsigned char *)0x5250
 #define TIM1_CR2 *(volatile unsigned char *)0x5251
 #define TIM1_SMCR *(volatile unsigned char *)0x5252
 #define TIM1_ETR *(volatile unsigned char *)0x5253
 #define TIM1_IER *(volatile unsigned char *)0x5254
 #define TIM1_SR1 *(volatile unsigned char *)0x5255
 #define TIM1_SR2 *(volatile unsigned char *)0x5256
 #define TIM1_EGR *(volatile unsigned char *)0x5257
 #define TIM1_CCMR1 *(volatile unsigned char *)0x5258
 #define TIM1_CCMR2 *(volatile unsigned char *)0x5259
 #define TIM1_CCMR3 *(volatile unsigned char *)0x525A
 #define TIM1_CCMR4 *(volatile unsigned char *)0x525B
 #define TIM1_CCER1 *(volatile unsigned char *)0x525C
 #define TIM1_CCER2 *(volatile unsigned char *)0x525D
 #define TIM1_CNTRH *(volatile unsigned char *)0x525E
 #define TIM1_CNTRL *(volatile unsigned char *)0x525F
 #define TIM1_PSCRH *(volatile unsigned char *)0x5260
 #define TIM1_PSCRL *(volatile unsigned char *)0x5261
 #define TIM1_ARRH *(volatile unsigned char *)0x5262
 #define TIM1_ARRL *(volatile unsigned char *)0x5263
 #define TIM1_RCR *(volatile unsigned char *)0x5264
 #define TIM1_CCR1H *(volatile unsigned char *)0x5265
 #define TIM1_CCR1L *(volatile unsigned char *)0x5266
 #define TIM1_CCR2H *(volatile unsigned char *)0x5267
 #define TIM1_CCR2L *(volatile unsigned char *)0x5268
 #define TIM1_CCR3H *(volatile unsigned char *)0x5269
 #define TIM1_CCR3L *(volatile unsigned char *)0x526A
 #define TIM1_CCR4H *(volatile unsigned char *)0x526B
 #define TIM1_CCR4L *(volatile unsigned char *)0x526C
 #define TIM1_BKR *(volatile unsigned char *)0x526D
 #define TIM1_DTR *(volatile unsigned char *)0x526E
 #define TIM1_OISR *(volatile unsigned char *)0x526F
 
 /* Note these are for STM8S103 and STM8S003
 STM8S105,104/207/208 are different */
 #define TIM2_CR1 *(volatile unsigned char *)0x5300
 #define TIM2_CR2 *(volatile unsigned char *)0x5301
 #define TIM2_SMCR *(volatile unsigned char *)0x5302
 #define TIM2_IER *(volatile unsigned char *)0x5303
 #define TIM2_SR1 *(volatile unsigned char *)0x5304
 #define TIM2_SR2 *(volatile unsigned char *)0x5305
 #define TIM2_EGR *(volatile unsigned char *)0x5306
 #define TIM2_CCMR1 *(volatile unsigned char *)0x5307
 #define TIM2_CCMR2 *(volatile unsigned char *)0x5308
 #define TIM2_CCMR3 *(volatile unsigned char *)0x5309
 #define TIM2_CCER1 *(volatile unsigned char *)0x530A
 #define TIM2_CCER2 *(volatile unsigned char *)0x530B
 #define TIM2_CNTRH *(volatile unsigned char *)0x530C
 #define TIM2_CNTRL *(volatile unsigned char *)0x530D
 #define TIM2_PSCR *(volatile unsigned char *)0x530E
 #define TIM2_ARRH *(volatile unsigned char *)0x530F
 #define TIM2_ARRL *(volatile unsigned char *)0x5310
 #define TIM2_CCR1H *(volatile unsigned char *)0x5311
 #define TIM2_CCR1L *(volatile unsigned char *)0x5312
 #define TIM2_CCR2H *(volatile unsigned char *)0x5313
 #define TIM2_CCR2L *(volatile unsigned char *)0x5314
 #define TIM2_CCR3H *(volatile unsigned char *)0x5315
 #define TIM2_CCR3L *(volatile unsigned char *)0x5316
 
 /* Note these are for STM8S103 and STM8S003
 STM8S105,104/207/208 are different */
 #define TIM4_CR1 *(volatile unsigned char *)0x5340
 #define TIM4_CR2 *(volatile unsigned char *)0x5341
 #define TIM4_SMCR *(volatile unsigned char *)0x5342
 #define TIM4_IER *(volatile unsigned char *)0x5343
 #define TIM4_SR *(volatile unsigned char *)0x5344
 #define TIM4_EGR *(volatile unsigned char *)0x5345
 #define TIM4_CNTR *(volatile unsigned char *)0x5346
 #define TIM4_PSCR *(volatile unsigned char *)0x5347
 #define TIM4_ARR *(volatile unsigned char *)0x5348
 
 #define TIM_IER_BIE (1 << 7)
 #define TIM_IER_TIE (1 << 6)
 #define TIM_IER_COMIE (1 << 5)
 #define TIM_IER_CC4IE (1 << 4)
 #define TIM_IER_CC3IE (1 << 3)
 #define TIM_IER_CC2IE (1 << 2)
 #define TIM_IER_CC1IE (1 << 1)
 #define TIM_IER_UIE (1 << 0)
 
 #define TIM_CR1_APRE (1 << 7)
 #define TIM_CR1_CMSH (1 << 6)
 #define TIM_CR1_CMSL (1 << 5)
 #define TIM_CR1_DIR (1 << 4)
 #define TIM_CR1_OPM (1 << 3)
 #define TIM_CR1_URS (1 << 2)
 #define TIM_CR1_UDIS (1 << 1)
 #define TIM_CR1_CEN (1 << 0)
 
 #define TIM_SR1_BIF (1 << 7)
 #define TIM_SR1_TIF (1 << 6)
 #define TIM_SR1_COMIF (1 << 5)
 #define TIM_SR1_CC4IF (1 << 4)
 #define TIM_SR1_CC3IF (1 << 3)
 #define TIM_SR1_CC2IF (1 << 2)
 #define TIM_SR1_CC1IF (1 << 1)
 #define TIM_SR1_UIF (1 << 0)
 
 /* SPI */
 #define SPI_CR1 *(volatile unsigned char *)0x5200
 #define SPI_CR2 *(volatile unsigned char *)0x5201
 #define SPI_ICR *(volatile unsigned char *)0x5202
 #define SPI_SR *(volatile unsigned char *)0x5203
 #define SPI_DR *(volatile unsigned char *)0x5204
 #define SPI_CRCPR *(volatile unsigned char *)0x5205
 #define SPI_RXCRCR *(volatile unsigned char *)0x5206
 #define SPI_TXCRCR *(volatile unsigned char *)0x5207
 
 #define SPI_CR1_LSBFIRST (1 << 7)
 #define SPI_CR1_SPE (1 << 6)
 #define SPI_CR1_BR(br) ((br) << 3)
 #define SPI_CR1_MSTR (1 << 2)
 #define SPI_CR1_CPOL (1 << 1)
 #define SPI_CR1_CPHA (1 << 0)
 
 #define SPI_CR2_BDM (1 << 7)
 #define SPI_CR2_BDOE (1 << 6)
 #define SPI_CR2_CRCEN (1 << 5)
 #define SPI_CR2_CRCNEXT (1 << 4)
 #define SPI_CR2_RXONLY (1 << 2)
 #define SPI_CR2_SSM (1 << 1)
 #define SPI_CR2_SSI (1 << 0)
 
 #define SPI_ICR_TXIE (1 << 7)
 #define SPI_ICR_RXIE (1 << 6)
 #define SPI_ICR_ERRIE (1 << 5)
 #define SPI_ICR_WKIE (1 << 4)
 
 #define SPI_SR_BSY (1 << 7)
 #define SPI_SR_OVR (1 << 6)
 #define SPI_SR_MODF (1 << 5)
 #define SPI_SR_CRCERR (1 << 4)
 #define SPI_SR_WKUP (1 << 3)
 #define SPI_SR_TXE (1 << 1)
 #define SPI_SR_RxNE (1 << 0)
 
 /* I2C */
 #define I2C_CR1 *(volatile unsigned char *)0x5210
 #define I2C_CR2 *(volatile unsigned char *)0x5211
 #define I2C_FREQR *(volatile unsigned char *)0x5212
 #define I2C_OARL *(volatile unsigned char *)0x5213
 #define I2C_OARH *(volatile unsigned char *)0x5214
 #define I2C_DR *(volatile unsigned char *)0x5216
 #define I2C_SR1 *(volatile unsigned char *)0x5217
 #define I2C_SR2 *(volatile unsigned char *)0x5218
 #define I2C_SR3 *(volatile unsigned char *)0x5219
 #define I2C_ITR *(volatile unsigned char *)0x521A
 #define I2C_CCRL *(volatile unsigned char *)0x521B
 #define I2C_CCRH *(volatile unsigned char *)0x521C
 #define I2C_TRISER *(volatile unsigned char *)0x521D
 #define I2C_PECR *(volatile unsigned char *)0x521E
 
 /* ADC */
 #define ADC_DBxR *(volatile unsigned char *)0x53E0
 #define ADC_CSR *(volatile unsigned char *)0x5400
 #define ADC_CR1 *(volatile unsigned char *)0x5401
 #define ADC_CR2 *(volatile unsigned char *)0x5402
 #define ADC_CR3 *(volatile unsigned char *)0x5403
 #define ADC_DRH *(volatile unsigned char *)0x5404
 #define ADC_DRL *(volatile unsigned char *)0x5405
 #define ADC_TDRH *(volatile unsigned char *)0x5406
 #define ADC_TDRL *(volatile unsigned char *)0x5407
 #define ADC_HTRH *(volatile unsigned char *)0x5408
 #define ADC_HTRL *(volatile unsigned char *)0x5409
 #define ADC_LTRH *(volatile unsigned char *)0x540A
 #define ADC_LTRL *(volatile unsigned char *)0x540B
 #define ADC_AWSRH *(volatile unsigned char *)0x540C
 #define ADC_AWSRL *(volatile unsigned char *)0x540D
 #define ADC_AWCRH *(volatile unsigned char *)0x540E
 #define ADC_AWCRL *(volatile unsigned char *)0x540F
 
 #define ADC_CSR_EOC (1 << 7)
 #define ADC_CSR_AWD (1 << 6)
 #define ADC_CSR_EOCIE (1 << 5)
 #define ADC_CSR_AWDIE (1 << 4)
 
 #define ADC_CR1_CONT (1 << 1)
 #define ADC_CR1_ADON (1 << 0)
 
 #define ADC_CR2_EXTTRIG (1 << 6)
 #define ADC_CR2_EXTSEL (1 << 4)
 #define ADC_CR2_ALIGN (1 << 3)
 #define ADC_CR2_SCAN (1 << 1)
 
 
 /* Interrupt commands */
 #define enableInterrupts()    {__asm__("rim\n");}  /* enable interrupts */
 #define disableInterrupts()   {__asm__("sim\n");}  /* disable interrupts */
 #define rim()                 {__asm__("rim\n");}  /* enable interrupts */
 #define sim()                 {__asm__("sim\n");}  /* disable interrupts */
 #define nop()                 {__asm__("nop\n");}  /* No Operation */
 #define trap()                {__asm__("trap\n");} /* Trap (soft IT) */
 #define wfi()                 {__asm__("wfi\n");}  /* Wait For Interrupt */
 #define halt()                {__asm__("halt\n");} /* Halt */
 
 /* Interrupt numbers */
 #define TIM1_OVR_UIF_IRQ 11
 #define TIM2_OVR_UIF_IRQ 13
 #define TIM3_OVR_UIF_IRQ 15
 #define ADC1_EOC_IRQ 22
 #define TIM4_OVR_UIF_IRQ 23
 /*
 Interrupts:
 0 TLI
 1 AWU Auto Wake up from Halt
 2 CLK Clock controller
 3 EXTI0 Port A external interrupts
 4 EXTI1 Port B external interrupts
 5 EXTI2 Port C external interrupts
 6 EXTI3 Port D external interrupts
 7 EXTI4 Port E external interrupts
 8 CAN CAN RX interrupt
 9 CAN CAN TX/ER/SC interrupt
 10 SPI End of Transfer
 11 TIM1 Update /Overflow/Underflow/Trigger/Break
 12 TIM1 Capture/Compare
 13 TIM2 Update /Overflow
 14 TIM2 Capture/Compare
 15 TIM3 Update /Overflow
 16 TIM3 Capture/Compare
 17 UART1 Tx complete
 18 UART1 Receive Register DATA FULL
 19 I2C I2C interrupt
 20 UART2/3 Tx complete
 21 UART2/3 Receive Register DATA FULL
 22 ADC End of Conversion
 23 TIM4 Update/Overflow
 24 FLASH EOP/WR_PG_DIS
 TLI 0
 AWU 1
 CLK 2
 EXTI_PORTA 3
 EXTI_PORTB 4
 EXTI_PORTC
 EXTI_PORTD
 EXTI_PORTE
 CAN_RX
 CAN_TX
 SPI
 TIM1_UPD_OVF_TRG_BRK
 TIM1_CAP_COM
 TIM2_UPD_OVF_BRK
 TIM2_CAP_COM
 TIM3_UPD_OVF_BRK
 TIM3_CAP_COM
 UART1_TX
 UART1_RX
 I2C 19
 ADC1 22
 TIM4_UPD_OVF 23
 EEPROM_EEC 24
 */
 
 #endif
 
 
 ## ChatGPT
 根据你提供的库,我为你编写了一个基本的SDCC编译环境的ADC读取和打印的代码。代码将读取ADC通道0和通道1的值,并通过UART1发送到串口。需要注意的是,这是基本版本的代码,可能需要进一步调整以适应你的硬件环境和性能需求。
 
 这是C代码:
 
 ```c
 #include "stm8.h"  // 假定你的库文件名是"stm8.h"
 
 void putchar(char c)
 {
 while(!(UART1_SR & UART_SR_TXE));
 UART1_DR = c;
 }
 
 void main()
 {
 unsigned int adc_val1, adc_val2;
 char buffer[6]; // Buffer to hold the ASCII result
 
 // 设置 UART1
 CLK_CKDIVR = 0x00; // Set the frequency to 16 MHz
 UART1_BRR2 = 0x03; UART1_BRR1 = 0x68; // Set the Baudrate to 115200 (16 MHz / 115200)
 UART1_CR2 = UART_CR2_TEN; // Allow TX and RX
 
 // 设置 ADC
 ADC_CR1 |= ADC_CR1_ADON;  // Turn on ADC (don't forget this one)
 ADC_CSR |= 0x01; // Select channel 1
 ADC_CR1 |= ADC_CR1_ADON;  // Start conversion
 
 while(1)
 {
 while(!(ADC_CSR & ADC_CSR_EOC)); // Wait for conversion to finish
 adc_val1 = ADC_DRL;  // Must read LSB first
 adc_val1 += ADC_DRH << 8;  // Then read MSB
 
 ADC_CSR &= ~ADC_CSR_EOC; // Clear End of conversion flag
 ADC_CSR = 0x02;  // Switch to channel 2
 ADC_CR1 |= ADC_CR1_ADON;  // Start conversion on channel 2
 
 while(!(ADC_CSR & ADC_CSR_EOC)); // Wait for conversion to finish
 adc_val2 = ADC_DRL;  // Must read LSB first
 adc_val2 += ADC_DRH << 8;  // Then read MSB
 
 // Convert the result to ASCII and send it out over UART1
 sprintf(buffer, "%d\r\n", adc_val1);
 for(int i = 0; buffer[i]; i++)
 {
 putchar(buffer[i]);
 }
 sprintf(buffer, "%d\r\n", adc_val2);
 for(int i = 0; buffer[i]; i++)
 {
 putchar(buffer[i]);
 }
 
 ADC_CSR &= ~ADC_CSR_EOC; // Clear End of conversion flag
 ADC_CSR = 0x01;  // Switch back to channel 1
 ADC_CR1 |= ADC_CR1_ADON;  // Start conversion on channel 1
 }
 }
 
 ```
 
 代码中,`putchar`函数用于UART1发送字符,main函数中的主循环将不断的读取ADC通道1和2的值,并通过UART1输出这两个通道的读数。注意,对于STM8的ADC来说,我们需要首先读取ADC_DRL (低8位) 然后才是 ADC_DRH (高2位),这样我们才能得到完整的10位ADC读数。
 
 另外,我们在读取完一个通道后,清除
 
 
 【 在 ztg 的大作中提到: 】
 : 写代码估计效果差强人意,毕竟对“智能”要求高。
 : 原理图输入和PCB布局拉线要是能ChatGPT辅助的话,我倒觉得更加是人工智能擅长的初级应用。
 : 有哪位研究过?可以探讨探讨
 --
 FROM 180.111.27.*
 
- 从楼主的例子看,感觉AI写逻辑比较简单的驱动程序或者测试程序还是可以的。
 --
 FROM 111.199.191.*
 
- 我的感觉是,gpt目前的正确用法,就是把它当个翻译器来用。
 不要让它去做开创性的工作,比如不给出指导让它直接去解决一个复杂问题,那结果一定是一塌糊涂的。
 
 要利用它全知的知识背景,以及它的接近人一样的理解能力,给它最直接的相关信息,然后提出一个问题让它能依葫芦画瓢式的解决。这样的结果还是相当不错的。
 
 我这次测试的都是比较小众领域的东西,结果让我相当惊叹。后面我会去测试chatgpt+skidl。skidl是小众中的小众,并且用coding的形式做schematic也一样极其的小众,如果chatgpt在这方面依然能做的很好,那就真的牛逼大发了....
 
 【 在 ztg 的大作中提到: 】
 : 从楼主的例子看,感觉AI写逻辑比较简单的驱动程序或者测试程序还是可以的。
 --
 FROM 180.111.27.*
 
- 先让gpt做自己擅长的事,把数据手册、应用手册翻译成中文看看,看看水平怎么样,也可以把外文书外文期刊翻译成中文看看,看看gpt能不能取代翻译。 什么时候出版社完全用gpt翻译出版书,让翻译们下岗。
 
 再让gpt去跟着人学驾驶,看看什么时候能实现自动驾驶。
 
 上面做不到,gpt也就是个玩具。
 
 【 在 lvsoft 的大作中提到: 】
 : 之前觉得gpt4也不咋滴,实际上还是我的使用姿势的问题。
 : 最近尝试用gpt4写mcu固件,感受很震撼~~
 : 下面我给出2个例子。第一个例子是我自己都对at32的库不熟悉,
 : ...................
 --
 FROM 222.129.48.*
 
- 翻译?早就是下岗进行时了。
 https://www.bilibili.com/video/BV1q24y1L7zP
 这个视频本身就是翻译行业的人做的,里面有很多对比例子,自己看吧。
 
 其实我是觉得这个例子更加离谱:
 https://www.bilibili.com/video/BV17G4y1j7XX
 
 基本上,这个就是万能翻译机。
 
 【 在 hartcomm 的大作中提到: 】
 : 先让gpt做自己擅长的事,把数据手册、应用手册翻译成中文看看,看看水平怎么样,也可以把外文书外文期刊翻译成中文看看,看看gpt能不能取代翻译。 什么时候出版社完全用gpt翻译出版书,让翻译们下岗。
 : 再让gpt去跟着人学驾驶,看看什么时候能实现自动驾驶。
 : 上面做不到,gpt也就是个玩具。
 : ...................
 --
 修改:lvsoft FROM 180.111.27.*
 FROM 180.111.27.*
 
- 有出版社 官方机构  大公司不要翻译完全依赖gpt同步发布不同语言版本的么?  如果做不到gpt也是是个高级点的谷歌翻译罢了  - 按道理gpt的翻译应该完全打败人类    - 【 在 lvsoft 的大作中提到: 】 - : 翻译?早就是下岗进行时了。 - :  https://www.bilibili.com/video/BV1q24y1L7zP- : 这个视频本身就是翻译行业的人做的,里面有很多对比例子,自己看吧。 - : ................... - -- - FROM 114.254.9.* 
- 官方机构不可以用chatgpt谢谢
 【 在 hartcomm 的大作中提到: 】
 : 有出版社 官方机构  大公司不要翻译完全依赖gpt同步发布不同语言版本的么?  如果做不到gpt也是是个高级点的谷歌翻译罢了
 : 按道理gpt的翻译应该完全打败人类
 :
 --
 FROM 180.111.27.*
 
- 自动驾驶现在还不行,但是各种手机软件的导航功能已经非常好用并且完全普及了。
 这里导航软件可以学习道路数据路况数据,给人类用户作为参考,而不是尝试去代替人类开车。我感觉gpt的用法应该参考地图导航软件。
 
 【 在 lvsoft 的大作中提到: 】
 :
 : 之前觉得gpt4也不咋滴,实际上还是我的使用姿势的问题。
 :
 : 最近尝试用gpt4写mcu固件,感受很震撼~~
 : 下面我给出2个例子。第一个例子是我自己都对at32的库不熟悉,
 --
 FROM 111.19.97.*
 
- gpt目前是语言模型,简单说就是用概率构建输出,让输出的正确率和类人的感觉提高很多
 并且通过概率,让人感觉甚至涌现出了”智能和意识“?
 其实他的弱点是逻辑推理。。。目前只是因为语言概率能力的涌现,表现出了一定的逻辑推理能力,但是有人说这个其实是”假象“?
 --
 FROM 120.245.16.*
 
- 这玩意至少写文字类的是个神器。用好的关键在于正确的描述问题,tao都用它解决数学问题了。前途不可限量
 【 在 lvsoft 的大作中提到: 】
 : 之前觉得gpt4也不咋滴,实际上还是我的使用姿势的问题。
 : 最近尝试用gpt4写mcu固件,感受很震撼~~
 : 下面我给出2个例子。第一个例子是我自己都对at32的库不熟悉,
 : ...................
 --
 FROM 171.119.124.*