• stm32(1): 寄存器初使用


    今日一言:
    "每位师父都会各有长短,很正常。"
    "那叶师父,你呢?"
    "我每样都懂一点点。"
        ——《叶问》

    stm32(1): 寄存器初使用

    本文阅读不仅需有一定的相关基础,
    还需自备《stm32参考手册》


    亮灯(1):前期准备

    硬件:

    • ST-LINK
    • STM32最小系统板(STM32F103C8T6)

    软件:

    • MDK

    目标:

    • 点亮PC13

    亮灯(2): 查表

    • RCC_AHB(复位时钟)基地址:0x40021000
      • RCC_APB2ENR(外设使能时钟)偏移地址0x18
    • GPIOC基地址:0x40011000
      • GPIOx_CRH(GPIO配置高寄存器)偏移地址0x04
      • GPIOX_ODR(GPIO输出数据寄存器)偏移地址0x0C

    亮灯(3):程序实现

    /* 基地址 */
    #define RCC_AHB  (unsigned int)0x40021000 
    #define GPIOC (unsigned int)0x40011000 

    /* 寄存器 */
    #define RCC_APB2ENR *(unsigned int*)(RCC_AHB + 0x18) 
    #define GPIOC_CRH *(unsigned int*)(GPIOC + 0x04 ) 
    #define GPIOC_ODR *(unsigned int*)(GPIOC + 0x0C ) 

    /* 程序入口 */ 
    int mainvoid ){

        /* 打开GPIOC的时钟 */
        RCC_APB2ENR |= 1<<4;

        /* 配置GPIOC高寄存器 */
        GPIOC_CRH &= ~(0x0F << (4*5));/* 清空配置 */
        GPIOC_CRH |=  (0x01 << (4*5));/* 配置推挽输出,最大速度10MHz */

        /* 拉低GPIO的第13脚 */
        GPIOC_ODR &= ~( 1 << 13 );

    }

    void SystemInit(void){
        // 空白系统初始化, 系统上电会调用的东西
    }

    亮灯(3):看看效果

  • 相关阅读:
    软件杯学习:python爬虫爬取新浪新闻并保存为csv格式
    操作系统实验1:时间片轮转和存储管理动态分区分配及回收
    软件测试
    实验6-使用TensorFlow完成线性回归
    实验一
    pycharm中设置anaconda环境
    架构之美读书笔记一
    2.1学习总结:决策树分类器
    python自学日记一
    爱甩卖网站正式上线啦
  • 原文地址:https://www.cnblogs.com/rcklos/p/12894413.html
Copyright © 2020-2023  润新知