完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题如下
main.c(112): error: #167: argument of type "double" is incompatible with parameter of type "const char *" 具体代码如下(main.c) #include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" #include "lcd.h" #include "key.h" #include "rs485.h" int main(void) { u8 key=0; u8 i=0,t=0; u8 cnt=0; u8 *p; u8 offset=0; double p2; float curr; //µ±Ç°½Ç¶È float set; //É趨½Ç¶È float dk1; float t1; float t2; float En; float En_1; float Kp; float Tsam; float Ti; float Td; float Dout; u16 calc_cycle; float currpwm; float weifu; float pwm_cycle; u8 rs485buf[14]={0}; // char xbuff[14]={0}; set =0; currpwm=0; pwm_cycle=10000; calc_cycle=1; //Td=20; Ti=8; Kp=500; Tsam=10; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); delay_init(168); uart_init(9600); usart3_init(9600); LED_Init(); LCD_Init(); KEY_Init(); POINT_COLOR=BLUE; LCD_ShowString(30,210,200,16,16,"Receive Data:"); while(1) { u3_Send_Data(Data1,5); delay_ms(30); u3_Receive_Data(rs485buf,&key); if(key) { printf("%c",key); for(i=0;i LCD_ShowxNum(30+i*32,230,rs485buf,3,16,0X80); offset+=sprintf((char*)p+offset,"%x,",rs485buf); } printf((char*)p); offset=0; LCD_ShowString(30,430,400,16,16,p); } t++; key=0; if(t==20) { LED0=!LED0; cnt++; LCD_ShowxNum(30+48,150,cnt,3,16,0X80); } p2=rs485buf; curr=atof(p2); En=set-curr; dk1=En-En_1; t1=Kp*dk1; t2=(Kp*Tsam)/Ti; t2=t2*En; Dout=t1+t2; currpwm=currpwm+Dout; if(currpwm>pwm_cycle) { currpwm=pwm_cycle; } else if(currpwm<-pwm_cycle) { currpwm=-pwm_cycle; } currpwm=currpwm*1; // En_2=En_1; En_1=En; RCC->AHB1ENR |= (1<<2); GPIOC->MODER |= 0X000AA000; GPIOC->OSPEEDR |= 0x000ff000; GPIOC->PUPDR |= 0x00055000; GPIOC->AFR[0] |= 0x22000000; GPIOC->AFR[1] |= 0x00000022; RCC->APB1ENR |= (1<<1); TIM3->PSC = 83; TIM3->ARR = 10000; TIM3->EGR |= 1; TIM3->CCMR1 |= 0x6060; TIM3->CCMR2 |= 0x6060; TIM3->CCR4 = 2000; if(currpwm<0) { TIM3->CCR1 = 0000; TIM3->CCR2 = 10000; TIM3->CCR3 = -currpwm; TIM3->CCER |= 0x1111; TIM3->CCMR1 |= 0x0808; TIM3->CCMR2 |= 0x0808; TIM3->CR1 |= 1; } if(currpwm>0) { TIM3->CCR1 = 10000; TIM3->CCR2 = 0000; TIM3->CCR3 = currpwm TIM3->CCER |= 0x1111; TIM3->CCMR1 |= 0x0808; TIM3->CCMR2 |= 0x0808; TIM3->CR1 |= 1; } if(curr>-0.2&&curr<0.2) { TIM3->CCR1 = 0000; TIM3->CCR2 = 0000; TIM3->CCR3 = 0000; TIM3->CCER |= 0x1111; TIM3->CCMR1 |= 0x0808; TIM3->CCMR2 |= 0x0808; TIM3->CR1 |= 1; } if (currpwm<0) { LCD_ShowChar(30+40,350,'-',16,0); weifu=-currpwm; LCD_ShowNum(30+48,350,weifu,5,16); } if (currpwm>=0) { LCD_ShowNum(30+48,350,currpwm,5,16); } } } 出错在 curr=atof(p2); atof()功能是把字符串转换成数值,curr是当前角度 本代码具体功能是根据传感器测得的角度信息,使用PID控制,实现平地铲的姿态控制。 希望大神帮忙!!!感谢 |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
579 浏览 1 评论
794 浏览 0 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
614 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1413 浏览 2 评论
1634 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 17:11 , Processed in 0.558187 second(s), Total 64, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号