这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » (SD卡+FATFS,进行中)zangchao ARM DIY进程帖

共124条 4/13 |‹ 2 3 4 5 6 7 ›| 跳转至
助工
2012-04-08 15:53:06     打赏
31楼
学习了,硬件准备中

工程师
2012-04-09 09:13:19     打赏
32楼
还没有开始啊,尽快啊

工程师
2012-04-09 18:09:29     打赏
33楼
今天找时间把按键的实验做了,借鉴了正点原子的代码,通过按键的中断方式控制LED的亮灭。稍后上传测试视频及主要代码

工程师
2012-04-09 18:30:17     打赏
34楼
PS:
今天调试程序时,MDK出现一个错误:No section matches selector - no section to be FIRST/LAST.查了网上的一些资料有些说是MDK的设置问题,经过自己的检验,发现问题不仅仅是MDK的设置问题,好包括STM32的启动代码是否对于本款处理器。希望童鞋们注意这个错误提示,看见它时不要急于修改MDK的设置,而是检查下自己的工程代码是否添加完全及添加对。

工程师
2012-04-09 18:35:24     打赏
35楼

视频地址:http://player.youku.com/player.php/sid/XMzc4NTYwMzk2/v.swf

晚上用手机拍的,不清楚,对不起了啊。下次白天录像

工程师
2012-04-09 18:40:00     打赏
36楼

注:用三个按键(从上至下,自己起名分别为S1、S2、S3)控制四个LED灯的亮灭。其中S1是翻转当前全部LED的状态;S2是翻转LD6和LD4的状态;S3是翻转LD5和LD3的状态。


工程师
2012-04-09 23:35:48     打赏
37楼

#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"  
#include "delay.h" 
#include "led.h"
#include "key.h"   
  
int main(void)
{         
 u8 t;  
 Stm32_Clock_Init(9); //系统时钟设置
 delay_init(72);      //延时初始化
 LED_Init();      //初始化与LED连接的硬件接口
 KEY_Init();          //初始化与按键连接的硬件接口
 while(1)
 {
  t=KEY_Scan();//得到键值
     if(t)
  {        
   switch(t)
   {    
    case 1:
     LED0=!LED0;
                                        LED2=!LED2;
     break;
    case 2:
     LED1=!LED1;
                                        LED3=!LED3;
     break;
    case 3:    
     LED0=!LED0;
     LED1=!LED1;
                                        LED2=!LED2;
     LED3=!LED3;
     break;
   }
  }else delay_ms(10);
 } 
}


工程师
2012-04-09 23:37:13     打赏
38楼

按键子程序
#include <stm32f10x_lib.h>
#include "key.h"
#include "delay.h"
////////////////////////////////////////////////////////////////////////////////// 
//********************************************************************************
//V1.1修改说明
//修改按键扫描函数,使整个代码可以支持SWD下载。
//////////////////////////////////////////////////////////////////////////////////   
           
//按键初始化函数
//特别注意:在该函数之后,JTAG将无法使用(SWD也无法使用)
//如果想JTAG仿真,可以屏蔽该函数。
//PA0.PC13.PF11 设置成输入
void KEY_Init(void)
{
 
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);//使能APB2外设GPIOF时钟
       
        //RCC->APB2ENR|=1<<2;     //使能PORTA时钟
        //RCC->APB2ENR|=1<<4;     //使能PORTC时钟 

 GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入  
 GPIOA->CRL|=0X00000008;  
 GPIOC->CRH&=0XFF0FFFFF;//PC13设置成输入  
 GPIOC->CRH|=0X00800000;
 GPIOF->CRH&=0XFFFF0FFF;//PF11设置成输入  
 GPIOF->CRH|=0X00008000;     
 GPIOC->ODR|=1<<13;    //PC13上拉,PA0默认下拉
 GPIOF->ODR|=1<<11;    //PF11上拉
}
//按键处理函数
//返回按键值
//0,没有任何按键按下
//1,KEY0按下
//2,KEY1按下
//3,KEY2按下 WK_UP
//注意此函数有响应优先级,KEY0>KEY1>KEY2!!
u8 KEY_Scan(void)

 static u8 key_up=1;//按键按松开标志 
 JTAG_Set(JTAG_SWD_DISABLE);
 if(key_up&&(KEY0==0||KEY1==0||KEY2==1))
 {
  delay_ms(10);//去抖动
  key_up=0;
  if(KEY0==0)
  {
   JTAG_Set(SWD_ENABLE);
   return 1;
  }
  else if(KEY1==0)
  {
   JTAG_Set(SWD_ENABLE);
   return 2;
  }
  else if(KEY2==1)
  {
   JTAG_Set(SWD_ENABLE);
   return 3;
  }
 }else if(KEY0==1&&KEY1==1&&KEY2==0)key_up=1;     
 JTAG_Set(SWD_ENABLE);
 return 0;// 无按键按下
}


工程师
2012-04-09 23:38:22     打赏
39楼

LED子程序
#include <stm32f10x_lib.h>   
#include "led.h"
////////////////////////////////////////////////////////////////////////////////           
//////////////////////////////////////////////////////////////////////////////////    

//初始化PE2,3,4,5为输出口.并使能这4个口的时钟     
//LED IO初始化
void LED_Init(void)
{
 RCC->APB2ENR|=1<<6;    //使能PORTE时钟       
 //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);   
 GPIOE->CRL&=0XFF0000FF;
 GPIOE->CRL|=0X00333300;//PE2,3,4,5 通用推挽输出    
        GPIOE->ODR|=1<<8;      //PE2,3,4,5 输出高
            
}


菜鸟
2012-04-10 00:43:55     打赏
40楼
好,支持!
进展神速。

共124条 4/13 |‹ 2 3 4 5 6 7 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]