你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3282|回复: 0

关于GPIO时间延迟

[复制链接]

2

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-11-6 23:42:33 | 显示全部楼层 |阅读模式
我用的是stm32,现在用的GPIOC1是人为模拟的信号,在实际项目中由外部信号源提供。
问题如下:我在主函数中对GPIOC1做如下操作产生脉冲信号,用GPIOC1触发GPIOC2中断,
中断设置为双边沿触发,然后上升沿置GPIOC8为高,下降沿置GPIOC8为低,GPIOC8输出脉冲与GPIOC1同步,问题是中断函数中采用寄存器直接操作GPIOC1和GPIOC8的上升沿之间的延时为450ns,即GPIOC8的上升沿滞后于GPIOC1上升沿450ns,如果中断程序里面采用调用库函数方式,则延时为850ns,能不能通过什么优化,使得采用寄存器操作,将450ns的延时再降低一点?注释:我单独将GPIOC2设置为上升沿触发,即在中断中无需判断上升沿,直接置GPIOC8为高,这样做延时也有350ns.还有没有降低的余地?
// 主函数操作:   
GPIO_SetBits(GPIOC,GPIO_Pin_1); //置高
delay();
GPIO_ResetBits(GPIOC,GPIO_Pin_1);//置低
中断处理函数:
void EXTI2_IRQHandler(void)
{
 if ((GPIOC->IDR & GPIO_Pin_2)) //上升沿   
  GPIOC->BSRR = GPIO_Pin_8; 
 else if(!(GPIOC->IDR & GPIO_Pin_2))  // 下降沿
  GPIOC->BRR = GPIO_Pin_8;
 EXTI-&gtR = EXTI_Line2; 
}
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版