用单片机点亮一个LED灯

本文介绍了使用Porteus进行单片机电路模拟及程序开发的经验。通过一个具体实例,展示了如何设置电路图并编写控制代码实现特定功能。

今天用了下Porteus,发现用这个模拟单片机电路和程序实在是太方便了。

下面是电路图。


 

控制代码

 

#include<iom16v.h>
#include<macros.h>
#define  uint  unsigned int

void delay(uint ms) {
    uint i,j;
	for(i=0;i<ms;i++) {
	   for(j=0;j<1141;j++);
	}
}

void main() {
    DDRC=0XFF;
    PORTC=0X00;
}
 
使用STM32单片机点亮一个LED,可通过以下两种常见方法实现: ### CubeMX配置结合HAL库函数 1. **CubeMX配置LED IO口**:选择单片机型号,如使用正点原子的精英版,可根据自身单片机选择对应型号;根据单片机LED IO口位置,将IO口配置为输出模式,此模式下IO口输出低平时LED点亮;配置时钟树,生成工程代码[^1]。 2. **使用HAL库函数点亮LED**:使用HAL库自带的写GPIO口函数 `HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET)`,使对应的IO口输出低平,进而点亮LED [^1]。 ### 直接操作HAL库 1. **确定LED对应的GPIO引脚**:打开开发板原理图,找到LED对应的GPIO引脚。例如LED0对应的GPIO为PF9,给PF9输出低平,LED就能 [^2]。 2. **初始化时钟**:如用到PA1引脚,先初始化GPIOA的时钟。由于GPIOA - GPIOF都在APB2总线上,开启时钟后,使用 `GPIO_Init()` 函数选择引脚进行最后的初始化 [^3]。 3. **创建并赋值结构体**:创建一个 `GPIO_InitTypeDef` 类型的结构体,对里面的成员进行赋值。成员包括模式(选择推挽输出模式,保证高低平都有驱动能力)、引脚(如直接选择1)、输出速度(选择50MHz)等。然后将该结构体的地址写入 `GPIO_Init()` 函数完成初始化 [^3]。 ### 示例代码 ```c #include "stm32fxxx_hal.h" // 根据实际芯片型号替换 void SystemClock_Config(void); static void MX_GPIO_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); while (1) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET); // 点亮LED HAL_Delay(1000); // 延时1秒 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); // 熄灭LED HAL_Delay(1000); // 延时1秒 } } void SystemClock_Config(void) { // 系统时钟配置代码,根据实际需求填写 } static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOB_CLK_ENABLE(); // 使能GPIOB时钟 GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出模式 GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值