zoukankan      html  css  js  c++  java
  • 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):看看效果

  • 相关阅读:
    最大公约数与最小公倍数
    素数筛
    基础数学问题
    考试前打模板
    斐波那契公约数
    期望及期望dp
    状压dp总结
    树链剖分学习
    B君的教育
    [noip2016]愤怒的小鸟
  • 原文地址:https://www.cnblogs.com/rcklos/p/12894413.html
Copyright © 2011-2022 走看看