共1条
1/1 1 跳转至页
[求助]大家帮忙看看这个A/D的程序
只看楼主 1楼
我这个程序总是进不了中断,这是为什么啊
#include "register.h"
int ADRESULT[16]; // 定义一个数组用于保存AD转换的结果
volatile unsigned int *j; // 定义一个指针变量j
int i=0x00,cesi,k=0;
void inline disable()
{
asm(" setc INTM");
}
void inline enable()
{
asm(" clrc INTM");
}
initial()
{
asm(" setc SXM"); // 符号位扩展有效
asm(" clrc OVM"); // 累加器中结果正常溢出
asm(" clrc CNF"); // B0被配置为数据存储空间
*SCSR1=0x81FE; // CLKIN=6M,CLKOUT=4*CLKIN=24M
*WDCR=0x0E8; // 不使能看门狗,因为SCSR2中的WDOVERRIDE
// 即WD保护位复位后的缺省值为1,故可以用
// 软件禁止看门狗
*IMR=0x0001; // 允许INT1中断
*IFR=0x0FFFF;
WSGR=0X00; // 清除全部中断标志,"写1清0"
}
// AD初始化子程序
void ADINIT()
{
*T4CNT=0x0000; // T4计数器清0
*T4CON=0x1704; // T4为连续增计数模式,128分频,且选用内部时钟源
*T4PER=0x75; // 设置T4的周期寄存器
*GPTCONB=0x400; // T4周期中断标志触发AD转换
*EVBIFRB=0x0FFFF; // 清除EVB中断标志,写"1"清0
*EVBIMRB=0x0000;
*ADCTRL1=0x10; // 采样时间窗口预定标位ACQ PS3-ACQ PS0为0,
// 转换时间预定标位CPS为0,AD为启动/停止模式,排
// 序器为级连工作方式,且禁止特殊的两种工作模式
*ADCTRL2=0x8404; // 可以用EVB的一个事件信号触发AD转换,
// 且用中断模式1
*MAXCONV=0x0F; // 16通道
*CHSELSEQ1=0x3210;
*CHSELSEQ2=0x7654;
*CHSELSEQ3=0x0BA98;
*CHSELSEQ4=0x0FEDC; // 转换通道是0和1
}
// 若是其它中断则直接返回子程序
void interrupt nothing()
{
enable();
return;
}
// AD中断服务子程序
void interrupt adint()
{
asm(" clrc SXM"); // 抑制符号位扩展
j=RESULT0; // 取得RESULT0的地址
for(i=0;i<=15;i++,j++)
{
ADRESULT[i]=*j>>6; // 把AD转换的结果左移6位后存入规定的数组
cesi=ADRESULT[i]; // 检验每个A/D转换的结果
}
*ADCTRL2=*ADCTRL2|0x4200; // 复位SEQ1,且清除INT FLAG SEQ1标志写"1"清0
++k;
enable(); // 开总中断,因为一进入中断总中断就自动关闭了
}
main()
{
disable(); // 禁止总中断
initial(); // 系统初始化
ADINIT(); // AD初始化子程序
enable(); // 开总中断
*T4CON=*T4CON|0x40; // 启动AD转换
/*while(1)
{
if(i==0x10)
break; // 如果已发生中断,则停止等待(发生中断后,i=0x10)
} // 等待中断发生
*T4CON=*T4CON&0x0FFBF; */ // 停止定时器4,即间接停止A/D转换
while(1)
{
;
} // 死循环,在实际的工程应用中在此可以利用A/D转换的
// 结果用于一些运算
}
中断向量表
.title "vectors.asm"
.ref _nothing
.ref _c_int0
.ref _adint
.sect ".vectors"
REVECT B _c_int0
INT1 B _adint
INT2 B _nothing
INT3 B _nothing
INT4 B _nothing
INT5 B _nothing
INT6 B _nothing
关键词: 求助 大家 帮忙 看看 这个 程序 中断 转换
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |