OpenEdv-开源电子网

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

略费解 这个ADC 为何一直往串口发数据

[复制链接]

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-4-27
在线时间
3 小时
发表于 2015-10-22 19:49:52 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]int main() { double temp=0; uint16_t times=0,decimal=0; uint32_t integer=0; Delay_Init(168); Uart_Init( 115200); LED_Init( ); ADC1_Init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//?è????????????????·?×é2 for(times=1;times<21;times++) { ADC_RegularChannelConfig( ADC1, ADC_Channel_5, 1, ADC_SampleTime_480Cycles); ADC_SoftwareStartConv(ADC1); while(ADC_GetFlagStatus( ADC1, ADC_FLAG_EOC)!=SET); integer+=ADC_GetConversionValue( ADC1); delay_ms(5); } integer/=(times-1); temp=integer*3.3/4096;//×????????? ?????????????á ???????????ò?? integer=temp;//??????·? decimal=(temp-integer)*1000;//??????·? //printf("?????? \r\n"); USART_SendData( USART2, integer+0x30); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); USART_SendData( USART2, '.'); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); USART_SendData( USART2, decimal/100+0x30); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); USART_SendData( USART2, decimal%100/10+0x30); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); USART_SendData( USART2, decimal%10+0x30); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); USART_SendData( USART2, 'V'); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); USART_SendData( USART2, '\r'); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); USART_SendData( USART2, '\n'); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); //while(1); } [/mw_shl_code]
这是main函数部分
[mw_shl_code=c,true] void ADC1_Init() { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AN;//???????? GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//???????? GPIO_Init( GPIOA, &GPIO_InitStructure);//GPIO???????? ADC_CommonInitStructure.ADC_DMAAccessMode= ADC_DMAAccessMode_Disabled;//??DMA ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;//???????? ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4;//±??¤??????????36MHZ?? ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;//???± ADC_CommonInit( &ADC_CommonInitStructure); ADC_InitStructure.ADC_DataAlign= ADC_DataAlign_Right;//?????? ADC_InitStructure.ADC_ScanConvMode = DISABLE;//·??¨?è ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//·????????? ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;//????·? ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;//12?? //ADC_InitStructure.ADC_ExternalTrigConv = ADC_Init( ADC1, &ADC_InitStructure); ADC_Cmd( ADC1, ENABLE); } [/mw_shl_code]
这是ADC部分   这个不知道为什么我如果把那句 [mw_shl_code=c,true]printf("?????? \r\n");屏蔽掉 ADC就一直往串口发数据 虽说数据是正确的。。。表示很费解 而且不屏蔽那句话 就正常了 只发一次数据。。求各路大神解答 [/mw_shl_code]

黑夜给了我黑色的眼睛,我却用它寻找光明。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-4-27
在线时间
3 小时
 楼主| 发表于 2015-10-22 20:23:19 | 显示全部楼层
补一句  没开串口的发送完成中断 所以应该不是中断问题
黑夜给了我黑色的眼睛,我却用它寻找光明。
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-4-27
在线时间
3 小时
 楼主| 发表于 2015-10-22 20:26:08 | 显示全部楼层
在加个  这是数据

黑夜给了我黑色的眼睛,我却用它寻找光明。
回复

使用道具 举报

6

主题

115

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1027
金钱
1027
注册时间
2015-6-1
在线时间
126 小时
发表于 2015-10-22 21:57:57 | 显示全部楼层
帮顶吧~~!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-10-22 22:09:22 | 显示全部楼层
仿真跟踪一下,就知道为什么了.
很简单的逻辑问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-4-27
在线时间
3 小时
 楼主| 发表于 2015-10-22 23:51:07 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥。。我仿真了  还是不知道为何 。。我只仿出了 把初始化那里那个clearflagstatus函数屏蔽之后 就算不屏蔽printf函数也一直往串口发数据了。。。然后我把clearflagstatus移到了main函数的最后  发现又只会发一次 数据   而且如果有这句话   全速运行停下来卡在的位置一定是在fputs函数那里 就是while((USART2->SR&0X40)==0)这   。。然后我就想不通 了。。。
黑夜给了我黑色的眼睛,我却用它寻找光明。
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-4-27
在线时间
3 小时
 楼主| 发表于 2015-10-23 10:48:34 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥   我把target那栏里的 useMicroLIB勾起来  发现就不会连续发了 但是如果在发之前不清零的话 (clearflagstatus)就会丢失第一个字节的数据 就是那个3   。。但我还没找到是为何
黑夜给了我黑色的眼睛,我却用它寻找光明。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-10-25 22:35:13 | 显示全部楼层
回复【7楼】骑牛,看风景:
---------------------------------
这个没遇到过哦
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 12:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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