这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » sacq的ARM DIY进程贴(手绘波形发生器 视频 HEX码)

共284条 16/29 |‹ 14 15 16 17 18 19 ›| 跳转至
专家
2012-05-04 07:32:10     打赏
151楼

不错啊!!继续关注


工程师
2012-05-04 10:02:36     打赏
152楼

大侠能不能把UGUI的驱动这块的源文件分享一下,谢谢
26188676@qq.com


高工
2012-05-04 23:58:26     打赏
153楼
还请容我理下头绪

助工
2012-05-05 16:56:44     打赏
154楼
楼主所说的电脑超级终端是个什么东东呀?可以进行串口调试?

高工
2012-05-05 20:27:22     打赏
155楼

随便一个,可以显示串口的程序,我常是用BHS的不带发送的与下载程序在一起的。


高工
2012-05-06 15:02:44     打赏
156楼

外部中断的实验

循着正点的《STM32不完全手册》蹒跚前行,实验4 的外部中断实验,涉及到:3个按键(2个定义口不同),4个LED灯(原2个,扩到4个,定义口不同),中断(源、线、程序)。
按键的触发作为中断源,2个LED的变化,是对中断的响应,2个LED作为工作状态指示。

按键的预定义及初始程序

#define KEY0 PFin(11)  //PF11   USER BUTTER
#define KEY1 PCin(13)  //PC13   Anti-Tamper
#define KEY2 PAin(0)   //PA0    WAKE_UP

初始程序#define KEY0 PFin(11)  //PF11   USER BUTTER
#define KEY1 PCin(13)  //PC13   Anti-Tamper
#define KEY2 PAin(0)   //PA0    WAKE_UP

void KEY_Init(void)
{
 RCC->APB2ENR|=1<<2;     //使能PORTA时钟
 RCC->APB2ENR|=1<<4;     //使能PORTc时钟
 RCC->APB2ENR|=1<<7;     //使能PORTf时钟

 GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入  
 GPIOA->CRL|=0X00000008;  

 GPIOF->CRH&=0XFFFF0FFF;//PF11设置成输入  
 GPIOF->CRH|=0X00008000;
        GPIOF->ODR|=1<<11 ;
 GPIOC->CRH&=0XFF0FFFFF;//PC13设置成输入  
 GPIOC->CRH|=0X00800000;
 GPIOC->ODR|=1<<13 ;

}



//LED端口定义

#define LED0 PEout(4)// PE4  RED LED    (LD5)
#define LED1 PEout(5)// PE5  GREEN LED  (LD6)

#define LED2 PEout(2)// PE2  RED LED    (LD3)
#define LED3 PEout(3)// PE3  RED LED    (LD4)

//LED初始程序
void LED_Init(void)
{
     
 RCC->APB2ENR|=1<<6;    //使能PORTE时钟 
    
       
 GPIOE->CRL&=0XFF0000FF;
 GPIOE->CRL|=0X00333300;//PE2~5推挽输出
 GPIOE->ODR|=0X003c;    //PE2~5输出高
}

//中断初始程序
void EXTIX_Init(void)
{
 RCC->APB2ENR|=1<<2;     //使能PORTA时钟
 RCC->APB2ENR|=1<<4;     //使能PORTC时钟 //
 RCC->APB2ENR|=1<<7;     //使能PORTF时钟 //
 JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD  

 GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入  
 GPIOA->CRL|=0X00000008;  
// GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入  
// GPIOA->CRH|=0X80800000;       
// GPIOA->ODR|=1<<13;    //PA13上拉,PA0默认下拉
// GPIOA->ODR|=1<<15;    //PA15上拉

 GPIOF->CRH&=0XFFFF0FFF;//PF11设置成输入  
 GPIOF->CRH|=0X00008000;
        GPIOF->ODR|=1<<11 ;
 GPIOC->CRH&=0XFF0FFFFF;//PC13设置成输入  
 GPIOC->CRH|=0X00800000;
 GPIOC->ODR|=1<<13 ;


 Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发
 Ex_NVIC_Config(GPIO_F,11,FTIR);//下降沿触发  //
  Ex_NVIC_Config(GPIO_C,13,FTIR);//下降沿触发  //
// Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿触发  //
// Ex_NVIC_Config(GPIO_A,15,FTIR);//下降沿触发  //

 MY_NVIC_Init(2,2,EXTI0_IRQChannel,2);    //抢占2,子优先级2,组2
 MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2   
}

被注解的,是原有的语句,为学习对比,仍保留着

int main(void)
{   
  Stm32_Clock_Init(9); //系统时钟设置
 delay_init(72);      //延时初始化
 uart_init(72,115200);  //串口初始化
 LED_Init();      //初始化与LED连接的硬件接口
 EXTIX_Init();   //外部中断初始化
 LED3=0;   //led test
 while(1)
 {    
  printf("OK\n"); 
  delay_ms(1000);
  LED2=!LED2 ;     //闪
  LED3=!LED3;  
 } 
}

主程序,只增加了2个LED闪动,交替的闪动,说明运行在主程序的循环里,否则,哈,找原因去吧。(曾利用这点,找到了中断程序中问题:未正确清除中断标志位,而一直处在中断状态,无暇去闪动LED)


高工
2012-05-07 22:58:35     打赏
157楼

高工
2012-05-07 23:23:30     打赏
158楼
原子的MY_NVIC_Init确实比较厉害。cm3的nvic比较难搞,我看了权威指南,还是没理解

高工
2012-05-09 00:28:05     打赏
159楼
权威指南我看不下去。
刚试DMA,不给面子,卡在那儿,好像不干呢,不好调。

高工
2012-05-09 08:15:35     打赏
160楼
LZ辛苦~!

共284条 16/29 |‹ 14 15 16 17 18 19 ›| 跳转至

回复

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