课程设计题,菜鸟紧急求助,希望各位大侠帮忙
初学嵌入式系统,遇到问题,请各位大侠不吝赐教:
编程完成,只写出关键模块的程序:
(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 编辑 ]
此帖出自
小平头技术问答
一周热门 更多>