[ZLG-ARM] 跪求uc/os下中断方式的adc例程

[复制链接]
2227|1
 楼主| knight1082 发表于 2008-1-15 16:10 | 显示全部楼层 |阅读模式
我的是smartARM开发板,模仿串口的写了个,运行不起来,高手能不能帮看看。<br /><br />#define&nbsp;IN_ADC<br />#include&nbsp;&quot;config.h&quot;<br />static&nbsp;OS_EVENT&nbsp;*ADCSem;<br />void&nbsp;ADCInit(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL1&nbsp;=&nbsp;0x01400000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置P0.27、P0.28连接到AIN0、AIN1<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSem&nbsp;=&nbsp;OSSemCreate(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ADCSem&nbsp;!=&nbsp;NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;FALSE;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;ADCGetch(uint8&nbsp;chunnel)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;ADC_Data;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;err;<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCR&nbsp;=&nbsp;(1&nbsp;&lt&lt&nbsp;chunnel)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SEL&nbsp;=&nbsp;1&nbsp;,选择通道0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((Fpclk&nbsp;/&nbsp;1000000&nbsp;-&nbsp;1)&nbsp;&lt&lt&nbsp;8)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CLKDIV&nbsp;=&nbsp;Fpclk&nbsp;/&nbsp;1000000&nbsp;-&nbsp;1&nbsp;,即转换时钟为1MHz<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BURST&nbsp;=&nbsp;0&nbsp;,软件控制转换操作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;17)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CLKS&nbsp;=&nbsp;0&nbsp;,使用11clock转换<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;21)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PDN&nbsp;=&nbsp;1&nbsp;,&nbsp;正常工作模式(非掉电转换模式)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;22)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TEST1:0&nbsp;=&nbsp;00&nbsp;,正常工作模式(非测试模式)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;24)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;START&nbsp;=&nbsp;1&nbsp;,直接启动ADC转换<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;27);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;EDGE&nbsp;=&nbsp;0&nbsp;(CAP/MAT引脚下降沿触发ADC转换)<br />&nbsp;&nbsp;&nbsp;&nbsp;OSSemPend(ADCSem,&nbsp;0,&nbsp;&err);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待接收数据&nbsp;//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADCR&nbsp;=&nbsp;ADCR&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;24);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;再次启运转换<br />&nbsp;&nbsp;&nbsp;&nbsp;OSSemPend(ADCSem,&nbsp;0,&nbsp;&err);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;等待接收数据//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADC_Data&nbsp;=&nbsp;ADDR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取ADC结果<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADC_Data&nbsp;=&nbsp;(ADC_Data&gt&gt6)&nbsp;&&nbsp;0x3FF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;提取AD转换值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADC_Data&nbsp;=&nbsp;ADC_Data&nbsp;*&nbsp;3300;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;数值转换<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADC_Data&nbsp;=&nbsp;ADC_Data&nbsp;/&nbsp;1024;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ADC_Data&nbsp;;<br />}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;ADC_Exception(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;OSSemPost(ADCSem);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;通知接收任务//<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;&nbsp;<br />}<br /><br />
zlgarm 发表于 2008-1-15 20:04 | 显示全部楼层

回复如下:

knight1082,您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;对于您的问题作如下回答:<br />&nbsp;&nbsp;&nbsp;1、首先检查您有没有在IRQ.s的尾部添加中断句柄<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADC_Handler&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;&nbsp;&nbsp;&nbsp;ADC_Execption<br /><br />&nbsp;&nbsp;&nbsp;2、检查您在Target.c中有没有配置和初始化中断源<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr1&nbsp;=&nbsp;(uint32)ADC_Handler;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl1&nbsp;=&nbsp;(0x20&nbsp;|&nbsp;18);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable&nbsp;=&nbsp;1&nbsp;&lt&lt&nbsp;18;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_wzj
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部