首页 > 其他分享 >基于STM32的寄存器实现点亮LED--基于RUST实现

基于STM32的寄存器实现点亮LED--基于RUST实现

时间:2024-08-18 17:26:18浏览次数:10  
标签:GPIOB 基于 const STM32 u32 OFFSET LED ptr RCC

main.rs

#![no_std]
#![no_main]

use core::ptr;
use cortex_m_rt::entry;
use panic_halt as _; // 当发生 panic 时停止执行

// 定义寄存器地址
const RCC_BASE: u32 = 0x40021000;
const GPIOB_BASE: u32 = 0x40010C00;

const RCC_APB2ENR_OFFSET: u32 = 0x18;
const GPIOB_CRL_OFFSET: u32 = 0x00;
const GPIOB_ODR_OFFSET: u32 = 0x0C;

#[entry]
fn main() -> ! {
    // 开启 GPIOB 时钟
    unsafe {
        let rcc_apb2enr = (RCC_BASE + RCC_APB2ENR_OFFSET) as *mut u32;
        ptr::write_volatile(rcc_apb2enr, ptr::read_volatile(rcc_apb2enr) | (1 << 3));
    }

    // 配置 PB5 为推挽输出模式,2MHz
    unsafe {
        let gpio_crl = (GPIOB_BASE + GPIOB_CRL_OFFSET) as *mut u32;
        // 清除 PB5 的模式和配置位
        ptr::write_volatile(gpio_crl, ptr::read_volatile(gpio_crl) & !(0b0110 << (4 * 5)));
        // 设置 PB5 为推挽输出,模式为 2MHz
        ptr::write_volatile(gpio_crl, ptr::read_volatile(gpio_crl) | (0b0010 << (4 * 5)));
    }

    // 设置 PB5 低电平(点亮 LED)
    unsafe {
        let gpio_odr = (GPIOB_BASE + GPIOB_ODR_OFFSET) as *mut u32;
        ptr::write_volatile(gpio_odr, ptr::read_volatile(gpio_odr) & !(1 << 5));
    }

    // 无限循环,防止程序结束
    loop {}
}

完整的项目源码地址

https://gitee.com/navysummer/stm32-rust-demo/tree/master/reg_led

  

标签:GPIOB,基于,const,STM32,u32,OFFSET,LED,ptr,RCC
From: https://www.cnblogs.com/navysummer-hardware/p/18365835

相关文章

  • 基于SpringBoot的农村风貌展示平台的设计与实现(源码+LW+调试文档)
     目录:程序视频演示:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • 基于nodejs+vue奶茶店点餐系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在快节奏的现代生活中,奶茶作为一种便捷且受欢迎的饮品,其市场需求持续增长。然而,传统奶茶店的点餐流程往往存在排队时间长、效率低下、顾客体验不佳等问题。......
  • 基于nodejs+vue母婴护理网站[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着社会对母婴健康关注度的不断提升,以及互联网技术的飞速发展,母婴护理行业正经历着前所未有的变革。传统母婴护理模式受限于地域、信息不对称等问题,难以满......
  • 基于nodejs+vue奶茶店管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着奶茶文化的兴起,奶茶店作为休闲饮品市场的重要组成部分,其数量迅速增长,竞争也日益激烈。然而,传统的管理方式往往存在效率低下、信息孤岛、人力成本高等问......
  • 基于nodejs+vue美容院预约管理系统[程序+论文+开题]-计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着美容行业的蓬勃发展,顾客对于美容服务的需求日益多样化,预约管理成为美容院日常运营中不可或缺的一环。传统的手工预约方式不仅效率低下,还容易出现预约冲......
  • 基于ssm+vue.js+uniapp的医院交互系统附带文章和源代码部署视频讲解等
    文章目录前言详细视频演示具体实现截图技术栈后端框架SSM前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于django+vue竞赛管理系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着教育领域的不断发展与深化,各类学科竞赛活动在提升学生综合素质、激发创新思维方面发挥着越来越重要的作用。然而,传统的竞赛管理模式往......
  • 基于django+vue景区民宿网上预约系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景近年来,随着旅游业的蓬勃发展,民宿作为一种新兴的住宿方式,以其独特的魅力、个性化的服务和贴近自然的居住环境,逐渐成为游客出行的首选。然而......
  • 基于django+vue景区旅游管理系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着旅游业的持续繁荣,景区作为旅游活动的重要载体,其管理效率与服务质量直接影响到游客的旅游体验和满意度。然而,传统景区管理模式在应对日......
  • 基于django+vue景区共享电车管理系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,景区游客数量急剧增加,交通拥堵与环境污染问题日益凸显。传统交通工具已难以满足游客对便捷、环保出行方式的需求。在......