OpenEdv-开源电子网

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

ADC进不了中断,求大神看看啥原因!小白求教!

[复制链接]

4

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-9-6
在线时间
13 小时
发表于 2015-10-13 17:34:48 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]void RCC_Configuration(void); void GPIO_Configuration(void); void ADC_Configuration(void); void NVIC_Configuration(void); int main() { RCC_Configuration(); GPIO_Configuration(); ADC_Configuration(); NVIC_Configuration(); uart_init(9600); while(1); } void RCC_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div6); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructuer; GPIO_InitStructuer.GPIO_Mode=GPIO_Mode_AIN; GPIO_InitStructuer.GPIO_Pin=GPIO_Pin_1; GPIO_InitStructuer.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructuer); } void ADC_Configuration(void) { ADC_InitTypeDef ADC_InitStructuer; ADC_DeInit(ADC1); //复位ADC ADC_InitStructuer.ADC_ContinuousConvMode=DISABLE; //单次模式 ADC_InitStructuer.ADC_DataAlign=ADC_DataAlign_Right;//向右对齐 ADC_InitStructuer.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动 ADC_InitStructuer.ADC_Mode=ADC_Mode_Independent;//工作在独立模式 ADC_InitStructuer.ADC_NbrOfChannel=1; ADC_InitStructuer.ADC_ScanConvMode=DISABLE;//单通道 ADC_Init(ADC1,&ADC_InitStructuer); //初始化ADC ADC_Cmd(ADC1,ENABLE); //使能ADC ADC_ResetCalibration(ADC1); //执行ADC校准 while(ADC_GetResetCalibrationStatus(ADC1)); //等待校准完成 ADC_StartCalibration(ADC1); //开始指定的ADC校准 while(ADC_GetCalibrationStatus(ADC1));//开始指定的ADC校准完成 ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE); } void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructuer; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructuer.NVIC_IRQChannel=ADC1_2_IRQn; NVIC_InitStructuer.NVIC_IRQChannelCmd=ENABLE; NVIC_InitStructuer.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitStructuer.NVIC_IRQChannelSubPriority=0; NVIC_Init(&NVIC_InitStructuer); } void ADC1_2_IRQHandler() { u32 ADC_value; //adc转换的值 if(ADC_GetITStatus(ADC1, ADC_IT_EOC)==SET) { printf("已经接收到数据\r\n"); printf("在处理····\r\n"); ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC1,ENABLE); while(!ADC_GetCalibrationStatus(ADC1)); printf("转换结束,数值:\r\n"); ADC_value=ADC_GetConversionValue(ADC1); printf("ADC转换结果:%d",ADC_value); ADC_ClearITPendingBit(ADC2, ADC_IT_EOC); } } [/mw_shl_code]

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

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-10-14 15:14:19 | 显示全部楼层
ADC1_2_IRQHandler什么意思,你杜撰的?
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

4

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2015-9-6
在线时间
13 小时
 楼主| 发表于 2015-10-14 20:02:52 | 显示全部楼层
回复【2楼】龙之谷:
---------------------------------
中断名字不是这个啊?
回复

使用道具 举报

15

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2012-11-21
在线时间
9 小时
发表于 2015-10-14 22:33:47 | 显示全部楼层
回复【3楼】shileifive:
---------------------------------
那是f1的库函数,f4改名字了,再启动文件找得到
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-10-15 09:10:05 | 显示全部楼层
查了寄存器版f1、f4的中断名,没找到这个名字,以为库函数和寄存器的一样,具体是否正确自己确认一下吧
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 23:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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