8
218
712
高级技术员
使用特权
门磁图片.jpg (76.18 KB )
下载附件
2012-8-26 17:21 上传
时序.jpg (40.75 KB )
2012-8-26 22:04 上传
干扰波形.jpg (17.83 KB )
2012-8-25 21:28 上传
3.jpg (25.59 KB )
2012-8-25 21:29 上传
流程图.jpeg (44.94 KB )
2012-8-25 21:33 上传
keil.jpg (34.03 KB )
2012-8-25 21:59 上传
st-link.jpg (42.51 KB )
st-link-1.jpg (21.07 KB )
st-link2.jpg (65.03 KB )
st-link3.jpg (33.45 KB )
st-link4.jpg (8.05 KB )
5.jpg (86.1 KB )
keil1.jpg (165.46 KB )
2012-8-25 22:09 上传
6.jpg (82 KB )
74
1729
5417
高级工程师
100
315
资深技术员
2176
7812
2万
管理员
哇,还在收回开发版啊? 58180698 发表于 2012-8-25 22:48
//TIM_ICInitStructure.TIM_ICPolarity =TIM_ICPolarity_Rising;//上升沿捕获 TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;//修改为同时捕获上升沿和下降沿
__IO uint32_t highlevels[100],lowlevels[100];
__IO uint8_t highlevel_index = 0,lowlevel_index = 0;
void TIM2_IRQHandler(void) { /* Get the Input Capture value */ IC2Value = TIM_GetCapture2(TIM2); //判断捕获引脚电平 if(GPIOA->IDR & GPIO_Pin_1) { //如果引脚电平为高,说明是上升沿捕获,即前一个电平为低电平. lowlevels[lowlevel_index++] = IC2Value; } else { //否则为高电平 highlevels[highlevel_index++] = IC2Value; } // if (IC2Value != 0) // { // highlevels[highlevel_index++] = IC2Value; // } // else // { // } if(highlevel_index >100) { //ASK数据解码 ASK_DECODE(); highlevel_index = 0; lowlevel_index = 0; } /* Clear TIM2 Capture compare interrupt pending bit */ TIM_ClearITPendingBit(TIM2, TIM_IT_CC2); __nop(); }
tim2.jpg (175.81 KB )
2012-8-26 15:05 上传
282
2404
7543
160
3331
1万
资深工程师
这么酷的帖子我要是不督促你,你若忘记发了,那岂不是论坛的一大损失哦!:lol 21小跑堂 发表于 2012-8-26 01:14
175
2496
7748
138
3044
9594
技术达人
2
398
1198
助理工程师
0
39
120
中级技术员
#define min_val 10000
__IO uint32_t high_t=0;
//如果引脚电平为高,说明是上升沿捕获,即前一个电平为低电平. if(high_t + IC2Value >min_val) { lowlevels[lowlevel_index++] = IC2Value; highlevels[highlevel_index++] = high_t; } else { highlevel_index = 0; lowlevel_index = 0; }
max7036.jpg (100 KB )
2012-8-27 21:43 上传
askh.jpg (97.21 KB )
askl.jpg (98.56 KB )
void ASK_DECODE(void) { uint16_t i,j; slave_id=0; for(i=1;i<lowlevel_index-25;i++)//循环查找数据间隔 { if(lowlevels[i-1]/lowlevels[i]>10 && lowlevels[i-1+25]/lowlevels[i+25]>10 ) { for(j=i+1;j<i+25;j++) { slave_id<<=1; if(highlevels[j]>10000)//数值大于10000视为1,否则为0 { highlevels[j]=1; //无用,仅在分析数据时做为参考 slave_id |=1; } else highlevels[j]=0;//无用,仅在分析数据时做为参考 } break; } } }
slave_id.jpg (64.17 KB )
2012-8-27 21:46 上传
5
910
2812
初级工程师
发表回复 本版积分规则 回帖后跳转到最后一页
人才类勋章
时间类勋章
发帖类勋章
等级类勋章
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号