OpenEdv-开源电子网

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

大神帮我看看为什么世界会有这么奇葩的事情

[复制链接]

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
发表于 2015-6-17 14:49:16 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true] [/mw_shl_code]
[mw_shl_code=c,true]int main(void) { u8 t=0; u8 i=0; float pro=0; long int temp0,temp1; Stm32_Clock_Init(9); uart_init(72,9600); delay_init(72); LED_Init(); LCD_Init(); KEY_Init(); Adc_Init(); MYDMA_Config(DMA1_Channel1,(u32)&ADC1->DR,(u32)AD_Value1,T*N*M); printf("传输数据长度%x\r\n",DMA1_Channel1->CNDTR); printf("TEXT_LENTH数值%d\r\n",TEXT_LENTH); POINT_COLOR=RED; LCD_ShowString(60,50,200,16,16,"Mini STM32"); LCD_ShowString(60,70,200,16,16,"DMA TEST"); LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK"); LCD_ShowString(60,110,200,16,16,"2014/3/9"); LCD_ShowString(60,130,200,16,16,"KEY0:Start"); // adcx=ADC1->DR; POINT_COLOR=BLUE; LCD_ShowString(60,170,200,16,16," %"); pro=DMA1_Channel1->CNDTR; pro=1-pro/TEXT_LENTH; pro*=100; LCD_ShowNum(60,170,pro,3,16); delay_ms(1000); ADC1->CR2|=1<<8;//允许dma访问 ADC1->CR2|=1<<0;//开启转换 ADC1->CR2|=1<<3;//初始化复位校准寄存器 while(ADC1->CR2&1<<3);//等待校准结束 ADC1->CR2|=1<<2;//开始AD校准 while(ADC1->CR2&1<<2); //等待校准结束 ADC1->SQR3|=0|(1<<5);//通道0,1以及通道16转换 MYDMA_Enable(DMA1_Channel1); //开启DMA通道1 // TIM3_Int_Init(600,3599); // TIM3_Int_Init(4999,7199); //当我这一行注释掉的时候,必需有最后一行的while(1); //否则程序停在标号1的地方,如果不注释掉这一行的时候,最后一行必须有while(1);否则停在标号为1的地方 while(1) { ADC1->CR2|=1<<22; 1: while(!(ADC1->SR&1<<1)); ADC1->CR2|=1<<22; while(!(ADC1->SR&1<<1)); delay_ms(10); if(DMA1->ISR&(1<<1)) { DMA1->IFCR|=1<<1; Average(); //滤波求平均值 while(i<250) { temp0=AD_After_Filter[0]*330/4096; temp1=AD_After_Filter[1]*330/4096; //通道0和1采样电压值放大100倍 USART_RX_BUF[0]=temp0/100+'0'; //放入数组,准备发送到串口 USART_RX_BUF[1]='.'; USART_RX_BUF[2]=temp0/10%10+'0'; USART_RX_BUF[3]=temp0%10+'0'; USART_RX_BUF[4]='V'; USART_RX_BUF[5]=temp1/100+'0'; USART_RX_BUF[6]='.'; USART_RX_BUF[7]=temp1/10%10+'0'; USART_RX_BUF[8]=temp1%10+'0'; USART_RX_BUF[9]='V'; printf("\n"); for(t=0;t<10;t++) { USART1->DR=USART_RX_BUF[t]; while((USART1->SR&0X40)==0); } printf("\r\n"); i++; } break; } pro=DMA1_Channel1->CNDTR; pro=1-pro/TEXT_LENTH; pro*=100; LCD_ShowNum(60,170,pro,3,16); } LCD_ShowNum(60,170,100,3,16); printf("ADC完成/r/n"); while(1); }[/mw_shl_code]


大神们,有什么意见吗?能不能告诉我为什么会这样? [mw_shl_code=c,true] 注意43,44行的字体[/mw_shl_code]

[mw_shl_code=c,true]画个图辅助一下[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-6-17 15:42:52 | 显示全部楼层
学无止境
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-6-17 17:22:01 | 显示全部楼层
问个问题跟走迷宫似的,跳来跳去
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-6-17 18:43:54 | 显示全部楼层
按你的意思  注释或者不注释 TIM3_Int_Init(4999,7199); 结果都是一样的    说明 TIM3_Int_Init(4999,7199);在这儿并没有什么卵用
停在标号1 处 可能是 ADC一直在转换    你加一个while(1);  也没用goto  代码运行到while(1);不也停在此处了  上面的内容还会执行么?
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-6-17 19:10:00 | 显示全部楼层
回复【4楼】lycreturn:
---------------------------------
标号1不是我程序有的,是我加上去的
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-6-17 19:15:50 | 显示全部楼层


画个图辅助说明一下
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-6-17 19:18:03 | 显示全部楼层
回复【4楼】lycreturn:
---------------------------------
加上定时器的时候,最后一行要有while(1);,否则停止在标号1那个地方,也就是ADC转换的那个地方
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-6-17 20:38:12 | 显示全部楼层
回复【7楼】DZKJXHxcz:
---------------------------------
你说的不是一个意思么   注释或者不注释   如果不加 while(1)  都会停在标号1
回复

使用道具 举报

3

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-5-29
在线时间
0 小时
发表于 2015-6-17 22:21:49 | 显示全部楼层
看一下你的ADC触发是不是跟TIM3有关系了
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-6-19 21:13:06 | 显示全部楼层
回复【9楼】XCDesigner:
---------------------------------
本来是有有关系的,后来我进入中断只改变灯的状态还是不行,太奇怪了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 02:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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