OpenEdv-开源电子网

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

UCOSIII 外部中断问题

[复制链接]

2

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-9-3
在线时间
6 小时
发表于 2016-9-4 08:43:44 | 显示全部楼层 |阅读模式
1金钱
      我用STM32f407 GPIOC 控制 Max197 (ADC)采集数据,在没有UCOSIII的系统上用Max197外部中断 连GPIOC.13 ,在中断服务程序中读取 GPIOC0~7(连ADC数据总线线) 数值正常,
但在 UCOSIII系统下,外部中断能响应,单读取GPIOC.0~7的数值始终为“0", 不知道问题出在哪里? 感觉在UCOSIII再进入中断时,将GPIOC的状态改变了? 盼大神指教!!!
//启动max197采样程序
void WriteMax(u8 td)
{
  GPIO_ResetBits(GPIOC,GPIO_Pin_12);      //CS
   GPIOC->ODR= (GPIOC->IDR&0xff00)|0x60|td ;  
  GPIO_ResetBits(GPIOC,GPIO_Pin_11);    //WR
  __nop();
    GPIO_SetBits(GPIOC,GPIO_Pin_11);     //WR
   __nop();
  __nop();
  __nop();
  GPIOC->ODR= (GPIOC->IDR&0xff00)|0x50|td ;  
  __nop();
  __nop();
  __nop();
  __nop();
    GPIO_ResetBits(GPIOC,GPIO_Pin_11);    //WR
  __nop();
  GPIO_SetBits(GPIOC,GPIO_Pin_11);     //WR
  GPIO_SetBits(GPIOC,GPIO_Pin_12);      //CS  
   GPIOC->ODR=(GPIOC->IDR&0xff00)|0xff;   
}
//中断接收程序
void EXTI15_10_IRQHandler()
{
   OSIntEnter();   
  if(EXTI_GetITStatus(EXTI_Line13) != RESET)
  {   
    u8 adz0,adz1;
     GPIOC->ODR=(GPIOC->IDR&0xff00)|0xff;  
    GPIO_SetBits(GPIOC,GPIO_Pin_11);     //WR
    GPIO_ResetBits(GPIOC,GPIO_Pin_9);    //HBEN
    GPIO_ResetBits(GPIOC,GPIO_Pin_12);    //CS
    GPIO_ResetBits(GPIOC,GPIO_Pin_10);
    adz0=GPIOC->IDR&0x00ff;
    GPIO_SetBits(GPIOC,GPIO_Pin_10);
    __nop();   
    GPIO_SetBits(GPIOC,GPIO_Pin_9);      //HBEN
    GPIO_ResetBits(GPIOC,GPIO_Pin_10);
    adz1=GPIOC->IDR&0x000f;     
    GPIO_SetBits(GPIOC,GPIO_Pin_10);   
    GPIO_SetBits(GPIOC,GPIO_Pin_12);
    ccdz[sp]=adz1<<8|adz0;
    EXTI_ClearITPendingBit(EXTI_Line13);  
  }
   OSIntExit();  
}


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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 11:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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