用FM33LG单片机再写一个
时间: 2024-03-20 13:39:00 浏览: 15
好的,以下是一个基于FM33LG单片机的按键点灯程序。假设使用的是FM33LG-EVB开发板,按键接在P2.0口,LED灯接在P1.0口。
首先需要在Keil中进行硬件配置,将P2.0口配置为输入模式,P1.0口配置为输出模式,然后生成对应的初始化代码。
然后在主函数中添加如下代码:
```
#include "fm33lg_evb.h"
int main()
{
/* 初始化GPIO */
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.Pin = GPIO_PIN_0;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_PULLUP;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_Init(GPIO_PORT_P2, &GPIO_InitStructure);
GPIO_InitStructure.Pin = GPIO_PIN_0;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_Init(GPIO_PORT_P1, &GPIO_InitStructure);
/* 初始化按键为高电平 */
GPIO_WriteBit(GPIO_PORT_P2, GPIO_PIN_0, GPIO_PIN_SET);
while (1)
{
/* 检测按键是否按下 */
if (GPIO_ReadInputDataBit(GPIO_PORT_P2, GPIO_PIN_0) == GPIO_PIN_RESET)
{
/* 点亮或熄灭LED灯 */
GPIO_ToggleBits(GPIO_PORT_P1, GPIO_PIN_0);
/* 等待按键松开 */
while (GPIO_ReadInputDataBit(GPIO_PORT_P2, GPIO_PIN_0) == GPIO_PIN_RESET);
}
}
}
```
程序的原理与前面的三个程序类似,通过轮询检测按键状态,当按键按下时,切换LED灯的状态。需要注意的是,在检测按键状态时需要使用GPIO_ReadInputDataBit函数,这是FM33LG单片机库中的GPIO操作函数。
需要注意的是,FM33LG-EVB开发板上的按键需要加上上拉电阻才能正常工作,可以通过在P2.0口与VCC之间串联一个10KΩ的电阻实现。此外,需要根据具体硬件配置调整LED灯和按键对应的IO口。