OpenEdv-开源电子网

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

遥控器和LCD,问题

[复制链接]

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
发表于 2011-8-15 22:29:16 | 显示全部楼层 |阅读模式
各位,问个问题,我在ALIENTEK ,运行遥控器程序和LCD程序是OK的,
然后我把它放在公司的F103C8板子上怎么就不行了???编译的时候重新选择了F103C8这个芯片的
不都是103吗?指点一下,那些地方需要更改
谢谢!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-15 22:47:39 | 显示全部楼层
仅仅需要修改IO口设置即可.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
 楼主| 发表于 2011-8-16 08:34:55 | 显示全部楼层
回复【2楼】正点原子:
仅仅需要修改IO口设置即可.
---------------------------------
看了一下,遥控器是接的PA1,这个不用修改了,LCD的需要修改一下,但是遥控器貌似也没有用,好像根本没有进入中断程序一样???
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-16 08:40:32 | 显示全部楼层
1,检查PA1是否收到遥控器信号。
2,检查并确定程序是否进入中断。
3,不一定要用LCD,用printf打印出来看结果即可。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
 楼主| 发表于 2011-8-16 09:24:26 | 显示全部楼层
回复【4楼】正点原子:
1,检查PA1是否收到遥控器信号。
2,检查并确定程序是否进入中断。
3,不一定要用LCD,用printf打印出来看结果即可。
---------------------------------
现在OK了,可以进入中断,在,main里面,
key=Remote_Process();
之后输出KEY值怎么总是等于0?
printf(“key =%d \n”,key)
回复 支持 反对

使用道具 举报

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
 楼主| 发表于 2011-8-17 08:29:32 | 显示全部楼层
后来发现一个奇怪现象,所有波形都被识别成255了,都无效;
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-17 08:42:25 | 显示全部楼层
这个看你的时钟是不是和我的一样了,里面用到延时来判断脉宽的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
 楼主| 发表于 2011-8-17 11:17:25 | 显示全部楼层
我用的你的程序,时钟还是你的,所以不应该有问题才对,Stm32_Clock_Init(9);//系统时钟设置就是,72M吧;我再看看
回复 支持 反对

使用道具 举报

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
 楼主| 发表于 2011-8-17 12:37:11 | 显示全部楼层
回复【7楼】正点原子:
这个看你的时钟是不是和我的一样了,里面用到延时来判断脉宽的.
---------------------------------
我看了一下,PA1中断次数也不对,只中断了4次,应该至少中断33次吧,才能完成一次接收
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-17 12:53:57 | 显示全部楼层
那就有问题了.
总之你看看延时是否准确先.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
 楼主| 发表于 2011-8-17 13:02:57 | 显示全部楼层
回复【10楼】正点原子:
那就有问题了.
总之你看看延时是否准确先.
---------------------------------
我把检测脉宽的延时去掉了,一进中断就输出一个值,然后就break,中断的其他内容都屏蔽了,我看了一下,就只输出了4次,说明中断就4次
intrrupt_cunt就增加了4次;完全不对啦

static u8 intrrupt_cunt =0 ;
u8 ulse_Width_Check(void)
{
    u8 t=0;
    intrrupt_cunt ++;  
  while(RDATA) ;
  return t;
}

void EXTI1_IRQHandler(void)
{       
    u8 res=0;
    u8 OK=0; 
    u8 RODATA=0;     
while(1)
    {        
        if(RDATA)//有高脉冲出现
        {
            res=Pulse_Width_Check();//获得此次高脉冲宽度  
    printf("intrrupt_cunt = %d  \n",intrrupt_cunt);
    break;
        }
   
    }        
EXTI->R=1<<1;      //清除中断标志位        
}  
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-17 13:58:45 | 显示全部楼层
回复【11楼】abnerle:
---------------------------------
一个printf的时间,你算算要多久?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
 楼主| 发表于 2011-8-17 14:10:40 | 显示全部楼层
把这里的printf去掉,intrrupt_cunt值传到main()里面,再试试看,谢谢了,哈哈,
回复 支持 反对

使用道具 举报

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
 楼主| 发表于 2011-8-17 14:55:00 | 显示全部楼层
去掉了,从main()里面读出值,变成22次了,还是不够33,真奇怪了
回复 支持 反对

使用道具 举报

32

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2011-8-15
在线时间
33 小时
 楼主| 发表于 2011-8-17 18:07:49 | 显示全部楼层
用示波器量了一下,20us实际时间是18.891us;
建了一个数组u8  r1[100];每次中断把计数值装进去,实际是
r1[0] =227  
r1[1] =29  
r1[2] =29  
r1[3] =86  
r1[4] =30  
r1[5] =30  
r1[6] =30  
r1[7] =30  
r1[8] =30  
r1[9] =87  
r1[10] =87  
r1[11] =30  
r1[12] =87  
r1[13] =87  
r1[14] =87  
r1[15] =87  
r1[16] =87  
r1[17] =30  
r1[18] =30  
r1[19] =30  
r1[20] =87  
r1[21] =30  
r1[22] =30  
r1[23] =30  
r1[24] =30  
r1[25] =87  
r1[26] =87  
r1[27] =87
r1[28] =30  
r1[29] =87  
r1[30] =87  
r1[31] =87  
r1[32] =87  
r1[33] =234  
r1[34] =115  
r1[35] =114  
因此,把1的高电平计数值改为90,发现读出值多右移了2位,加上移位32次就停止的条件,一切OK了,

谢谢,原子指点,明天继续24C64,顺便问问,模拟I2C必须要求这2个IO是普通的,必须没有复用功能,才可以吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-8-17 18:10:51 | 显示全部楼层
随便哪两个都可以的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 20:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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