问答

汇集网友智慧,解决技术难题

21ic问答首页 - TAG - While
  • 求解决ADC转换问题

    为什么ADC转换会卡在while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EC ));//等待转换结束

    ADC转换 ADC1 ge ST While status

    1086浏览量 4回复量 关注量
  • GD32E503硬件I2C问题

    求大佬们帮忙看看[img]https://bbs.21ic.com/static/image/smiley/comcom/9.gif[/img]刚开始搞编程,最近在学习GD32E503-Start的开发板,按照官方提供的固件库使用指南操作在使用硬件I2C的时候发现ADDSEND位一直不置1,导致程序一直卡在 [color=#f00000]while(!i2c_flag_get(i2c_periph,I2C_FLAG_ADDSEND));[/color] 检查硬件连接也没啥问题,把程序下进去之后,疯狂按复位,发现有那么几次ADDSEND被置1了,真的搞不清楚什么情况,求各位帮忙看看,代码是按照官方提供的例程写的,使用的是I2C1,PB10,PB11引脚 void lmp_reg_write(uint32_t i2c_periph, uint32_t lmp_reg, uint8_t datatransmit) { while(i2c_flag_get(i2c_periph,I2C_FLAG_I2CBSY)); i2c_start_on_bus(i2c_periph); while(!i2c_flag_get(i2c_periph,I2C_FLAG_SBSEND)); i2c_master_addressing(i2c_periph,LMP_ADDR_WRITE,I2C_TRANSMITTER); [color=#f00000]while(!i2c_flag_get(i2c_periph,I2C_FLAG_ADDSEND));[/color] i2c_flag_clear(i2c_periph,I2C_FLAG_ADDSEND); while(!i2c_flag_get(i2c_periph,I2C_FLAG_TBE)); i2c_data_transmit(i2c_periph,lmp_reg); while(!i2c_flag_get(i2c_periph,I2C_FLAG_TBE)); i2c_data_transmit(i2c_periph,datatransmit); while(!i2c_flag_get(i2c_periph,I2C_FLAG_BTC)); i2c_stop_on_bus(i2c_periph); while(I2C_CTL0(i2c_periph)&0x0200); } 供电我是直接用usb线到电脑上,连的gd-link那个usb口,也方便烧录。

    国产芯片 硬件 I2c ip While AD

    3754浏览量 3回复量 关注量
  • 51单片机读取P1数据

    51单片机读取P1数据 P1口数据有ad0804转换而来,P1口硬件没有上拉电阻,小白写的程序如下:while(1) { aa=0; read(); //AD转换 P1=0xff; aa=P1; if(aa>0x84) { fmq=0; } if(aa<0x84) { fmq=1; } 程序运行时,接P1的灯指示根据输入变化,而读取的值(程序中的aa)貌似一直不变,判断理由是蜂鸣器一直响(fmq=0),高人指导一下。

    51单片机 AD AD转换 While 上拉电阻 电阻

    6842浏览量 10回复量 关注量
  • MM32F031f6p6 GPIO没电平输出

    用 MM32F031f6p6 代替 stm32f030f4P6出现GPIO口电平没输出,我是直接用stm32f030f4p6工程来调试mmf031f6p6的。 void gpio_delay(int cnt) { while(cnt--); } void gpio_init(void) { GPIO_InitTypeDef out; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); out.GPIO_Pin = GPIO_Pin_7; out.GPIO_Mode = GPIO_Mode_OUT; out.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOA, &out); while(1) { GPIO_SetBits(GPIOA, GPIO_Pin_7); gpio_delay(60000); GPIO_ResetBits(GPIOA, GPIO_Pin_7); gpio_delay(60000); } } 用官网的代码,用st-link debug程序没点击keil的start按钮就直接运行,也会报错,这会是什么问题? 上传不了图片 官网工程路径:Boards_MM32F031xx_q\MBF031C6T_q_lib\EXTI\EXTI_KEY\KEIL_PRJ

    MM32F031 GPIO 电平 ni While

    9266浏览量 9回复量 关注量
  • GD32F103VC替换ST32F103VC后,SPI读出的数全是0xff

    用ST芯片,SPI读取正常。换成GD芯片后,按照官方提供的GD和ST差异表,修改了程序,u8 SPI_FLASH_SendByte(u8 byte) 返回值全是0xff,有人遇到过这种情况吗? u8 SPI_FLASH_SendByte(u8 byte) // { /* Loop while DR register in not emplty */ while ((SPI1->SR & SPI_I2S_FLAG_TXE) == 0); /* Send byte through the SPI1 peripheral */ SPI1->DR =byte; /* Wait to receive a byte */ while ((SPI1->SR & SPI_I2S_FLAG_RXNE) == 0); /* Return the byte read from the SPI bus */ return SPI1->DR; }

    spi ST gd32F103 TE While se

    1665浏览量 1回复量 关注量
  • 我的ad0809模块EOC一直处于低电平 sos

    [color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "]做学校的电子设计竞赛要做一个电压测量器,想使用ad0809模块去做,ad0809的IN0口外接了一个ne555信号发生器,单片机使用的是STC89C52RC,输入地址位使用模块上的跳线帽选择了IN0,设备的其余部分还没有加上去,但是测试的时候发现程序一直卡在“[/font][/backcolor][/color][color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]while(EOC==0)”这个地方无法继续运行,想请求各位大佬看看可能是什么问题,万分感谢![/font][/backcolor][/color][font=Tahoma, Microsoft Yahei, Simsun][color=#252525] [/color][/font][color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]#include [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]#define uint unsigned int[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]#define uchar unsigned char[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]uint volt=0; //电压值测定值[/font][/backcolor][/color] [color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "]sbit CLK=P2^7; //时钟信号[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]sbit START=P2^4; //转换启动开关[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]sbit EOC=P2^5; //转换结束标志[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]sbit OE=P2^6;//定义ADC0809各脚[/font][/backcolor][/color] [color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "]void delay(uint x)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]{[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] uchar y,z;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] for(y=x;y>0;y--)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] for(z=250;z>0;z--);[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] }[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]void ADC()[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]{[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] EA=1;//开中断[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] OE=0;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] //确保进入正常AD转换状态[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] START=0;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] delay(10);[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] START=1;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]delay(10);[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] START=0;//ad开始转换 [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] while(EOC==0);[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][/backcolor][/color][color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "] OE=1;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] EA=0;//关中断[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] volt=P0;//获取转换值保存到volt中,(P0为转换后数据)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] volt=volt*196;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] OE=0;//输出转换结束 (要在获取转换值之后)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]}[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]void timer() interrupt 1[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]{[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] TH0=(65536-2)/256; //重装计数初值[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]TL0=(65536-2)%256; //重装计数初值[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]CLK=!CLK; //取反[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]}[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]void main()[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]{[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] TMOD=0X01; [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]CLK=0; [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]TH0=(65536-2)/256; [/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]TL0=(65536-2)%256;[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] ET0=1;//开定时器0中断[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] TR0=1;//开启定时器0*/[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] while(1)[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "] {[/font][/backcolor][/color] [color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "] ADC();//调用模数转换程序 [/font][/backcolor][/color] [color=#252525][backcolor=rgb(255, 255, 255)][font=Tahoma, "]}[/font][/backcolor][/color] [color=rgb(37, 37, 37)][backcolor=rgb(255, 255, 255)][font=Tahoma, "]}[/font][/backcolor][/color]

    ad0809 电平 ST start dc While

    1614浏览量 0回复量 关注量
  • 代码没有全部跑完,是什么原因?

    代码运行起来,没有全部跑完就停止了,这是什么原因?停止的位置没有加while循环。

    代码 While

    854浏览量 27回复量 关注量