DMA-ADC采样数据自动存储
本帖最后由 芯LYS 于 2023-8-28 15:39 编辑DMA-ADC采样数据自动存储 有现成的 范例参考程序下载地址:https://www.stcai.com/filedownload/618387
本帖最后由 菜鸟大神 于 2023-8-26 23:45 编辑
例程跑起来没问题,实际移植到程序里面,一开DMA就重启 所以仿真的重要性就出来来,用仿真认真观察
编译器/仿真器/ISP下载/做自己的ISP - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
本帖最后由 菜鸟大神 于 2023-8-28 22:03 编辑
神农鼎 发表于 2023-8-27 10:47
所以仿真的重要性就出来来,用仿真认真观察
编译器/仿真器/ISP下载/做自己的ISP - 国芯论坛-STC全球32位80 ...
重启的问题找到了 例程里面中断用了13号 ,实际测试的时候没有做汇编跳转,
现在不会重启了,
但是一旦打开其他中断 比如USB中断 或者PWM中断 就会直接重启
不打开其他中断 DMA正常运转 并且得到ADC数据 本帖最后由 清风迎明月 于 2023-9-7 08:08 编辑
STC8H8K64U的ADC2通道不是P5.4吗?
P1.2没必要设高阻
本帖最后由 清风迎明月 于 2023-9-6 18:55 编辑
详细读了一下STC8H8K64U的DMA-ADC程序,觉得有问题。
void UartPutc(unsigned char dat)
{
S2BUF=dat;
while((S2CON & 2) == 0);
S2CON &= ~2: //Clear Tx flag
}
char putchar(char c)
{
UartPutc(c);
return c;
}
这段程序虽然编写在里面了,但是并没有使用。没跑程序,不知道能否出结果
还有ADC2不是在P5.4管脚吗?
清风迎明月 发表于 2023-9-6 18:26
详细读了一下STC8H8K64U的DMA-ADC程序,觉得有问题。
void UartPutc(unsigned char dat)
{
这两个函数是重写"putchar",当需要使用"printf"函数进行打印时,重写"putchar"函数才能改变输出接口。
这两个函数的作用是将"printf"函数打印内容通过串口2进行输出。
清风迎明月 发表于 2023-9-5 18:32
STC8H8K64U的ADC2通道不是P5.4吗?
P1.2没必要设高阻
STC8H8K64U的ADC2通道是P5.4,例程也没有设置P1.2为高阻啊
P1M1 = 0xfb; P1M0 = 0x00; //设置要做ADC的IO做高阻输入
P5M1 = 0x1c; P5M0 = 0x0c; //设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V),设置P5.4为高阻输入P1M1 = 0xfb -> 1111 1011b
P1M0 = 0x00 -> 0000 0000b
P1.2是准双向模式。
乘风飞扬 发表于 2023-9-7 09:56
这两个函数是重写"putchar",当需要使用"printf"函数进行打印时,重写"putchar"函数才能改变输出接口。
...
感谢{:4_196:},学习到了。
因为printf默认是串口1,此例中用了串口2,所以要重写 清风迎明月 发表于 2023-9-6 18:26
详细读了一下STC8H8K64U的DMA-ADC程序,觉得有问题。
void UartPutc(unsigned char dat)
{
我也再读时发现了。万分感谢
顺便在请教一下,此程序中
u16 Get_ADC12bitResult(u8 channel);
void ADC_convert(u8 chn); //chn=0~7对应P1.0~P1.7, chn=8~14对应P0.0~P0.6, chn=15对应BandGap电压
这两个定义有用吗?
还有如果再有1个中断号大于31的时,程序是不是不好处理了?
页:
[1]
2