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

共31条 2/4 1 2 3 4 跳转至
高工
2012-04-04 11:18:47     打赏
11楼
有电子城的地方是好地方。。。。。

助工
2012-04-16 21:19:49     打赏
12楼

最近比较忙,好久没有更新帖子了。
现在先上一张,CPU被JLINK识别的图。这说明STM32芯片已经可以启动,可以进行下步调试。


院士
2012-04-16 23:09:16     打赏
13楼
顶一下楼主。

助工
2012-04-17 23:21:26     打赏
14楼

LED控制实验:
要控制LED首先是配置GPIO口为输出模式。
初始化代码和操作代码如下:
——回复可见内容——


助工
2012-04-21 23:32:25     打赏
15楼

GPIO输出实验完成后,开始做GPIO输入实验也就是按键输入的查询方式。

本次实验使用User按键和LED作为实验的基本电路,如上图所示当按键按下时PF11为0,释放时PF11为1.初始化PF11为输入方式代码如下:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
GPIO_InitStructureF.GPIO_Pin  = GPIO_KEY1;
GPIO_InitStructureF.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructureF.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIO_KEY_PORT, &GPIO_InitStructureF);

通过uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);这个函数读取I/O口的值。本实验具体操作代码如下:
if(GPIO_ReadInputDataBit(GPIO_KEY_PORT,GPIO_KEY1)==0)
{
    GPIO_ResetBits(GPIO_LED,DS1_PIN);    
}
else
{
    GPIO_SetBits(GPIO_LED,DS1_PIN);    
}

宏定义:
#define GPIO_KEY_PORT     GPIOF
#define GPIO_KEY1      GPIO_Pin_11
 


助工
2012-04-23 22:44:13     打赏
16楼
本实验效果是通过User按键,控制LD6灯的亮灭。
按键中断初始化代码:
 GPIO_EXTILineConfig(GPIO_PortSourceGPIOF, GPIO_PinSource11); 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
 EXIT_Type.EXTI_Line = EXTI_Line11;
 EXIT_Type.EXTI_Mode = EXTI_Mode_Interrupt;
 EXIT_Type.EXTI_Trigger = EXTI_Trigger_Falling;
 EXIT_Type.EXTI_LineCmd = ENABLE;
 EXTI_Init(&EXIT_Type);

 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
 NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //中断通道
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//强占优先级
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //次优先级
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //通道中断使能
 NVIC_Init(&NVIC_InitStructure);       //初始化中断
中断函数:
void EXTI15_10_IRQHandler(void)
{
    if(Led_State)
   {
       GPIO_SetBits(GPIO_LED,DS1_PIN);
        Led_State = 0;
   }
   else
   {
        GPIO_ResetBits(GPIO_LED,DS1_PIN);
        Led_State = 1;
   }
 EXTI_ClearITPendingBit(EXTI_Line11); 
}

助工
2012-04-23 23:11:05     打赏
17楼
STM32F10XX通过设置SCB_AIRCR寄存器中的PRIGROUP[2:0],将优先级PRI_N[7:4]可以分成两部分:一部分是优先级组(先占优先级),另一部分是次优先级。
PRIGROUP PRI_N Group priorities Sub priorities
0b001 0bxxxx 16 None
0b100 0bxxxy 8 2
0b101 0bxxyy 4 4
0b110 0bxyyy 2 8
0b111 0byyyy None 16
当一个中断执行的时候,不能被同一个优先级组的中断打断。
当多个中断请求时,若是相同的优先级组,就由次优先级确定响应的顺序。

院士
2012-04-24 08:50:29     打赏
18楼
楼主开始公布点东东了?

助工
2012-04-30 11:04:12     打赏
19楼

有时间就公布进度


助工
2012-04-30 11:25:39     打赏
20楼
SysTick实验:
     本实验以LED控制实验为基础,增加delay_nms()精确延时实现走马灯效果。本实验使用的是8MHz的晶振。使用官方3.5.0的库。
从stm32f10.h分析得知PLLCLK  = HSE * 9 = 72Mhz,PLLCLK = SYSCLK = HCLK = 72Mhz
初始化代码如下:   
SysTick->CTRL = 0x00;    //设置SysTick的时钟为HCLK/8 = 9Mhz
 SysTick->VAL  = 0;            //清倒计数值
延时函数
 void delay_nms(uint16_t n)
{
 uint32_t temp;
 SysTick->LOAD = 9000*n;   //以9000为基准值也就是1ms,n输入有效值控制在1~1864.
 SysTick->CTRL = 0x01;
 do
 {
     temp = SysTick->CTRL;
 }
 while( (temp&0x01)&&! (temp&(1<<16)) );     
 SysTick->CTRL = 0x0000;
 SysTick->LOAD = 0x0000;
}

共31条 2/4 1 2 3 4 跳转至

回复

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