OpenEdv-开源电子网

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

关于ADC单次转换的问题

[复制链接]

3

主题

13

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-3-28
在线时间
6 小时
发表于 2017-3-28 12:56:58 | 显示全部楼层 |阅读模式
1金钱
int main(void)
{
            Adc_Init();
           delay_init(168);               
           uart_init(9600);       
        while(1)
        {   
               

             ADC_1=Get_Adc(ADC_Channel_5);  

             USART_SendData(USART1,ADC_1);        
                  

       
        }
       
}


我直接用的原子提供库函数,在主函数里写了一个ADC的读取和串口的发送 ,正常来说应该是上位机一直有数据显示
但是我只有通断电源一次,他才显示一个数字,然后就没有了,希望各位大神可以帮忙看看






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

使用道具 举报

1

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2017-3-6
在线时间
35 小时
发表于 2017-3-28 13:24:32 | 显示全部楼层
建议加延时,要不然上位机那里你根本看不过来。我觉得可能是因为你没有清usart的发送标志位,建议看看数据手册。
回复

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-3-28
在线时间
6 小时
 楼主| 发表于 2017-3-28 14:13:23 | 显示全部楼层
已经解决了 还是感谢
回复

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-3-28
在线时间
6 小时
 楼主| 发表于 2017-3-28 16:02:48 | 显示全部楼层
zy1234536 发表于 2017-3-28 13:24
建议加延时,要不然上位机那里你根本看不过来。我觉得可能是因为你没有清usart的发送标志位,建议看看数据 ...

还是不行了  我原来程序没变 现在又不行了 我不加ADC 直接发一个数字 他是正常的连续输出 加了ADC 就不行了  现在不知道问题出在哪里 配置和标准配置一样的
回复

使用道具 举报

0

主题

174

帖子

0

精华

高级会员

Rank: 4

积分
725
金钱
725
注册时间
2016-1-9
在线时间
64 小时
发表于 2017-3-28 23:28:08 | 显示全部楼层
不要用 USART_SendData()函数发16位的数据  转换成两个8位再发   
回复

使用道具 举报

1

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2017-3-6
在线时间
35 小时
发表于 2017-3-29 08:18:42 | 显示全部楼层
vivian 发表于 2017-3-28 16:02
还是不行了  我原来程序没变 现在又不行了 我不加ADC 直接发一个数字 他是正常的连续输出 加了ADC 就不行 ...

那你是用中断的吗?两边都?建议ADC那边用DMA方式。如果用中断,记得设好优先级。如果没用中断,usart的发送可以用中断一个一个发的,这样可以避免被打断。
回复

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-3-28
在线时间
6 小时
 楼主| 发表于 2017-3-29 13:20:08 | 显示全部楼层
zy1234536 发表于 2017-3-29 08:18
那你是用中断的吗?两边都?建议ADC那边用DMA方式。如果用中断,记得设好优先级。如果没用中断,usart的 ...

没有中断 就是ADC1的单次转换 设置了两个通道  然后读取
回复

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-3-28
在线时间
6 小时
 楼主| 发表于 2017-3-29 14:29:35 | 显示全部楼层
vivian 发表于 2017-3-29 13:20
没有中断 就是ADC1的单次转换 设置了两个通道  然后读取

就是复用两个引脚为模拟输入
ADC_InitStructure.ADC_NbrOfConversion =2; //配置两个通道在规则序列中
然后分别读取两个模拟量 但是我不知道为什么 读取回来的就一个
回复

使用道具 举报

1

主题

44

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
256
金钱
256
注册时间
2017-3-6
在线时间
35 小时
发表于 2017-3-29 15:38:31 | 显示全部楼层
我记得以前看到一个帖子,好像是类似的问题,是说你DMA要全字的,不能半字的。我觉得这是一个启发,你更改一下DMA的配置吧。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 20:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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