STM32编程考试题,急待解决,请过路的侠客不吝赐教

2019-03-23 17:53发布

课程设计题,菜鸟紧急求助,希望各位大侠帮忙
初学嵌入式系统,遇到问题,请各位大侠不吝赐教:
编程完成,只写出关键模块的程序:
(1).课程设计题:STM32的PD4接按键,PE4接LED灯,要求使用查询方式读取按键PD4高低电平的变化,当PD4=1,即高电平时,PE4所连接的LED灯点亮;当PD4=0,即低电平时,该LED熄灭;
(2).课程设计题:使用PC11设置为外部中断源完成上小题(1)的功能,即PC11接按键,产生中断,PD4接LED灯,当按键按下产生中断时,该LED点亮;没有按键按下时熄灭。
(3).课程设计题:写出使用Timer3产生18kHz, 35%占空比PWM输出的主要程序段。

下面的是两位好心的大侠给的答案,但是没有回答完上面的三个问题,请过路的侠客,不吝赐教,帮忙解决问题。
(1)高级一点的
#define Dev_GetBit_BB(DevAddr, BitNumber)         (*(vu32 *)(DEV_BB_BASE|((DevAddr - DEV_BASE)<<5)|((BitNumber)<<2)))
gpiod,gpioe时钟...
Dev_GetBit_BB(((u32)&(GPIOE->ODR)),4)=Dev_GetBit_BB(((u32)&(GPIOD->IDR)),4);//不知道led共阳还是共阴
...
(2)gpioc,gpiod时钟;nvic配置中断;中断服务里上面那段...
(3)定时器时钟;定时器计时配置;定时器通道配置;通道赋值...

/*
* 函数名:GPIO_Config
* 描述  :配置LED用到的I/O口
* 输入  :无
* 输出  :无
*/
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE, ENABLE);
  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_4 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_4 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;      
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
}
u8 Key_Scan(GPIO_TypeDef* GPIOx,u16 GPIO_Pin)
{   
  /*检测是否有按键按下 */
    if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == 0)
   {   
    /*延时消抖*/
    Delay(10000);  
      if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == 0)  
     {  
      /*等待按键释放 */
      while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == 0);   
       return  0;  
     }
   else
     return 1;
  }
else
  return 1;
}

[ 本帖最后由 allan0501 于 2013-9-27 09:43 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。