编写C语言函数int led(),使得D7与D10发光二极管出现同时亮同时灭的现象,D7对应的是GPIOB26,D10对应的是GPIOC12
时间: 2023-06-26 08:08:16 浏览: 151
最基础的DSP2812C语言程序集(第一部分)
3星 · 编辑精心推荐
假设你使用的是STM32单片机,可以按照以下方式编写函数:
```c
#include "stm32f10x_gpio.h"
int led(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 使能GPIOB和GPIOC的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
// 配置GPIOB26和GPIOC12为推挽输出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_Init(GPIOB, &GPIO_InitStructure);
while (1)
{
// D7和D10同时亮
GPIO_SetBits(GPIOC, GPIO_Pin_12);
GPIO_SetBits(GPIOB, GPIO_Pin_14);
delay_ms(500);
// D7和D10同时灭
GPIO_ResetBits(GPIOC, GPIO_Pin_12);
GPIO_ResetBits(GPIOB, GPIO_Pin_14);
delay_ms(500);
}
}
```
需要注意的是,在上述代码中使用了一个名为`delay_ms`的函数,它用于延时。如果你的工程中没有此函数,可以自行编写。例如:
```c
void delay_ms(uint16_t ms)
{
uint16_t i,j;
for(i=0;i<ms;i++)
for(j=0;j<1141;j++);
}
```
此函数会让程序暂停一段时间,以实现延时效果。
阅读全文