OpenEdv-开源电子网

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

stm32高级定时器问题

[复制链接]

4

主题

11

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2013-3-16
在线时间
3 小时
发表于 2013-8-20 18:59:40 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-20 22:56:39 | 显示全部楼层
Handler是中断服务函数
IRQChannel才是通道。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2013-3-16
在线时间
3 小时
 楼主| 发表于 2013-8-20 23:37:13 | 显示全部楼层

 恩  我搞错了 谢谢  我后来发现了 想把帖子删了,没删掉,还是非常感谢

 

回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2013-3-16
在线时间
3 小时
 楼主| 发表于 2013-8-20 23:43:49 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
#include"matrixKey.h"
#include "delay.h"
#include "sys.h"
#include "lcd.h"

u8 value=0;
void MatrixKey_Init(void)
{
RCC->APB2ENR |=1<<5;//enable clock of ORTD
GPIOD->CRH&=0x00000000;
GPIOD->CRH|=0x33338888;//PD8 9 10 11输入 列 D12 13 14 15推挽输出 行 
GPIOD->ODR|=0x0F00;//PB上拉
}

u8 MatrixKey_Scan(void)  //实现矩阵键盘。返回值为,各按键的键值,此键值由用户自己定义。
{
u8 KeyVal;  //keyVal为最后返回的键值
GPIOD->ODR|=0xEF00;
switch(GPIOD->IDR&0x0f00)
  {
  case 0x0E00:
   KeyVal=15; break;
  case 0x0D00: 
  KeyVal=11; break;
  case 0x0B00: 
  KeyVal=7; break;
  case 0x0700:
   KeyVal=3; break;
  }
GPIOD->ODR|=0xDF00;
switch(GPIOD->IDR&0x0f00)
{
case 0x0E00:
 KeyVal=14; break;
case 0x0D00: 
KeyVal=10; break;
case 0x0B00: 
KeyVal=6; break;
case 0x0700:
 KeyVal=2; break;
}
  GPIOD->ODR|=0xBF00;
  switch(GPIOD->IDR&0x0f00)
  {
  case 0x0E00:
   KeyVal=13; break;
  case 0x0D00: 
  KeyVal=9; break;
  case 0x0B00: 
  KeyVal=5; break;
  case 0x0700:
   KeyVal=1; break;
  }
  GPIOD->ODR|=0x7F00;
  switch(GPIOD->IDR&0x0f00)
  {
  case 0x0E00:
   KeyVal=12; break;
  case 0x0D00: 
  KeyVal=8; break;
  case 0x0B00: 
  KeyVal=4; break;
  case 0x0700:
   KeyVal=0; break;
  }
GPIOD->ODR|=0x0F00; //PB上拉 
    return KeyVal;


void EXTIK_Init(void)
{
RCC->APB2ENR|=1<<5;     //使能PORTD时钟
GPIOD->CRL&=0XFFF0FFFF; //PD4设置成输入   
GPIOD->CRL|=0X00080000;     
GPIOD->ODR|=1<<4;     //PD4上拉 
  Ex_NVIC_Config(GPIO_D,4,FTIR);  //下降沿触发
MY_NVIC_Init(2,3,EXTI4_IRQChannel,2); //抢占2,子优先级3,组2  
}

//外部中断4服务程序
void EXTI4_IRQHandler(void)
{
    delay_ms(10);
   if(KEY==0)
   {   
   value=MatrixKey_Scan();
 GPIOD->ODR|=0x0F00; //PB上拉  
   LCD_ShowNum(20,110,value,2,16);
   }
   EXTI->R=1<<4;  //清除LINE4上的中断标志位
}

原子哥这是我写的矩阵键盘程序,每次只能扫描一行,四行放一起不行了,不知道是什么原因,帮忙看看谢谢!


这是原理图,每次扫描时,把其他三个行扫描注释后是正确的,一加一起就错

 u8 KeyVal;  //keyVal为最后返回的键值 
 GPIOD->ODR|=0xEF00;
 switch(GPIOD->IDR&0x0f00)
  {
   case 0x0E00:
    KeyVal=15; break;
   case 0x0D00:
   KeyVal=11; break;
   case 0x0B00:
   KeyVal=7; break;
   case 0x0700:
    KeyVal=3; break;
  }  
//  GPIOD->ODR|=0xDF00;
//  switch(GPIOD->IDR&0x0f00)
//  {
//   case 0x0E00:
//    KeyVal=14; break;
//   case 0x0D00:
//   KeyVal=10; break;
//   case 0x0B00:
//   KeyVal=6; break;
//   case 0x0700:
//    KeyVal=2; break;
//  }  
//   GPIOD->ODR|=0xBF00;
//   switch(GPIOD->IDR&0x0f00)
//   {
//    case 0x0E00:
//     KeyVal=13; break;
//    case 0x0D00:
//    KeyVal=9; break;
//    case 0x0B00:
//    KeyVal=5; break;
//    case 0x0700:
//     KeyVal=1; break; 
//   }
//   GPIOD->ODR|=0x7F00;
//   switch(GPIOD->IDR&0x0f00)
//   {
//    case 0x0E00:
//     KeyVal=12; break;
//    case 0x0D00:
//    KeyVal=8; break;
//    case 0x0B00:
//    KeyVal=4; break;
//    case 0x0700:
//     KeyVal=0; break;
//   }
每次像这样可以

最小系统测试.rar

492.27 KB, 下载次数: 54

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-21 00:21:06 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2013-3-16
在线时间
3 小时
 楼主| 发表于 2013-8-21 09:40:40 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
我写的有问题,求解答
回复 支持 反对

使用道具 举报

8

主题

130

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2013-4-24
在线时间
0 小时
发表于 2013-8-21 11:09:17 | 显示全部楼层
我以前也遇到过类似问题
你猜你猜你再猜
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2013-3-16
在线时间
3 小时
 楼主| 发表于 2013-8-21 13:00:10 | 显示全部楼层
回复【7楼】895855913:
---------------------------------
你是怎么解决的?求解答?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-14 17:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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