中级会员
 
- 积分
- 213
- 金钱
- 213
- 注册时间
- 2012-8-24
- 在线时间
- 0 小时
|
我买的是mini开发板,想实现战舰板子里那个输入捕获例程(例程10)。代码基本上全复制原子战舰版(灯的明暗控制还是用的mini上的PWM输出例程代码)。弄完之后,发现灯可以明暗变化,但总是无法成功捕获按键wake_up产生的高电平 不知道原因在哪里?
int main(void)
{
u32 temp=0;
Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,9600); //串口初始化为9600
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
TIM3_PWM_Init(899,0); //不分频。PWM频率=72000/(899+1)=80Khz
TIM5_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数
while(1)
{
delay_ms(10);
LED0_PWM_VAL++;
if(LED0_PWM_VAL==300)LED0_PWM_VAL=0;
if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次高电平
{
temp=TIM5CH1_CAPTURE_STA&0X3F;
temp*=65536; //溢出时间总和
temp+=TIM5CH1_CAPTURE_VAL; //得到总的高电平时间
printf("HIGH:%d us\r\n",temp); //打印总的高点平时间
TIM5CH1_CAPTURE_STA=0; //开启下一次捕获
}
}
}
我仿真了一下,发现总是进不去红色的if,
我把这个if括号改成1,一直打印0us,说明串口没有问题。问题就是捕获不到,按了好久那个wake_up,总是不行。
想不出是为什么? 硬件也不会有问题,因为原理图两个版本的这个按键和PA0都没改,是一样的。。
现在要回去睡觉了,在这里发一下,
看有没有谁也遇到过
原子哥有空也请帮看一下。
找不出原因的感觉很不爽!!
|
|