嵌入式系统基础 选择一个arm开发板,编程实现至少3个led灯轮流点亮,要求每个灯亮时长为10毫秒。
时间: 2023-05-09 22:03:05 浏览: 261
嵌入式系统是将计算机处理能力以及电子技术与各种设备、工具整合到一起构成的特定系统。它的应用范围广泛,包括消费类电子产品、工业自动化、军工、车载电子等领域。通常来说,嵌入式系统是基于微控制器或微处理器、具有实时性、可靠性和稳定性的底层系统。
在选择arm开发板后,可使用keil ide进行编程。首先,配置相应的io口,并设置为输出模式,然后编写循环程序实现led灯轮流点亮。每个led灯亮起来的持续时间为10毫秒。具体操作可以参考以下代码:
#include <stm32f10x.h> //包含库文件
#define LED_COUNT 3 //LED灯个数
GPIO_InitTypeDef GPIO_InitStructure;
//初始化引脚结构体
int main(void)
{
int i;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//开启GPIO的时钟,PORTC是GPIOC的简称
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化GPIO
while (1)
{
for (i = 0; i < LED_COUNT; i++) //循环输出控制LED的电平
{
GPIO_SetBits(GPIOC, GPIO_Pin_6 << i); //设置引脚输出高电平
delay_ms(10); //延迟10毫秒
GPIO_ResetBits(GPIOC, GPIO_Pin_6 << i); //设置引脚输出低电平
}
}
}
void delay_ms(unsigned int nms) //延时函数
{
int i, j;
for (i = 0; i < nms; i++)
for (j = 0; j < 12000; j++); //12000次空循环约为1毫秒
}
通过以上代码实现了轮流点亮3个LED灯,每个灯亮的时间为10毫秒。其中,GPIO_Pin_6、GPIO_Pin_7和GPIO_Pin_8分别代表三个LED灯的控制引脚。GPIO_Mode_Out_PP表示推挽输出模式,GPIO_Speed_50MHz表示输出速度为50MHz。由于嵌入式系统的特性,在编程过程中需要注意实时性和稳定性问题,例如需要合适的延时函数。
阅读全文