NUC029最简短程序点亮LED,不调用头文件

[复制链接]
688|1
gxhn 发表于 2025-11-1 20:18 | 显示全部楼层 |阅读模式
下面是N76E003实现亮LED方法
sfr P0=0x80
P0=255;
如何实现NUC029LAN,32位这种程序呢
哪位大神回下
 楼主| gxhn 发表于 2025-11-1 20:26 | 显示全部楼层

NUC029最简短程序点亮LED,不调用头文件

#include <stdint.h> // 引入标准整数类型定义,尽管这里不调用头文件,但为了确保数据类型定义,我们还是需要这个包含

int main(void) {
    // GPIOA的基地址
    volatile uint32_t* GPIOA_BASE = (uint32_t*)0x40010800;
    // GPIOA的输出数据寄存器地址偏移为0x14,即0x40010814
    volatile uint32_t* GPIOA_ODR = (uint32_t*)(GPIOA_BASE + 0x14);
    // GPIOA的输出类型寄存器地址偏移为0x04,即0x40010804
    volatile uint32_t* GPIOA_OTYPER = (uint32_t*)(GPIOA_BASE + 0x04);
    // GPIOA的时钟控制寄存器地址偏移为0x18,即0x40010818(启用GPIOA时钟)
    volatile uint32_t* RCC_AHBENR = (uint32_t*)0x40021014;
    // GPIOA的模式寄存器地址偏移为0x00,即0x40010800(配置为通用输出模式)
    volatile uint32_t* GPIOA_MODER = (uint32_t*)GPIOA_BASE;

    // 启用GPIOA的时钟
    *RCC_AHBENR |= (1 << 17); // RCC_AHBENR的第17位是GPIOA时钟控制位

    // 配置PA5为通用输出模式(MODER寄存器)
    *GPIOA_MODER = (*GPIOA_MODER & ~(3 << (2 * 5))) | (1 << (2 * 5)); // 将PA5配置为通用输出模式(输出模式是1)
    // 配置PA5为推挽输出(OTYPER寄存器)
    *GPIOA_OTYPER &= ~(1 << 5); // 清零表示推挽输出(复位状态)
    // 设置PA5输出高电平点亮LED
    *GPIOA_ODR |= (1 << 5); // 设置PA5为高电平

    while(1) {
        // 在这里什么都不做,仅仅保持LED点亮状态
    }
}
这个是STM32实现,NUC029呢,我试验了设为输出,并设定1,还是没输出
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部