明净

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

stm32接上电源

 

 

 野火_STM32F103C8T6核心板_V1.0_原理图.pdf

 给GPIO输出低电压

 

PA    起始地址:0x4001 0800

 

ODR:偏移地址:0C

得到PA  绝对地址:0x4001 080C

(unsigned int *)0X4001080C  地址
*
(unsigned int *)0X4001080C 操作地址

置零:   &= ~();

PA1 PA2 PA3

 

 

点亮PA2    根据电路图低电压即可点亮       即ODR2值为 0 其他不变

1  0000000000000001

2  1<<2    1左移两位为        0000000000000100

3  ~(1<<2)  取反                  111111111111111011

4  &=~(1<<2)  与原数相与   XXXXXXXXXXX0XX

*(unsigned int *)0X4001080C &= ~(1<<2);//将PA2 点亮           点亮PA1 PA2      &= ~(3<<1);??

STM32 输入输出是由 配置寄存器来控制

端口配置是4位一组

 

1  MODE2---    00:输入模式(复位后的状态)    01:输出模式,最大速度10MHz    10:输出模式,最大速度2MHz     11:输出模式,最大速度50MHz

 

    设置为输出模式 01

2  CNF2------  设置为:   00 推挽输出    (01开漏是用在I2C)

 

3  PA2 配置:0001  -----对应完整为 0000 0001 0000 0000  

4  1<<4*2      4位代表一个GPIO配置组    左移2组即可

 PA    起始地址:0x4001 0800  配置的偏移地址为 00

配置的绝对地址为:   *(unsigned int *)0X40010800

5  |=   写1       原值与  0000 0001 0000 0000  相或即可   XXXX XXX1 XXXX XXXX 

 *(unsigned int *)0X40010800 |= (1<<(4*2));         //如果PA1  PA2 都点亮  0000 0001 0001 0000   17<<4

开启时钟 为了节省功耗,外设的时钟都是关闭的

打开时钟RCC    这个外设控制 

 

RCC偏移地址是  0x18

 

RCC 起始地址是:0x4002 1000

RCC绝对地址:*(unsigned int *)0X40021018

IOPA  置为1      |=    (1<<2)

 

#include "stm32f10x.h"

int main(void)
{
    //配置RCC寄存器使能GPIO时钟
    *(unsigned int *)0X40021018 |= (1<<2);
    
    // 配置CRL 推挽输出
    *(unsigned int *)0X40010800 |= (1<<(4*2));
    //配置ODR   PA1  ODR  PA2 (1<<2)   
    *(unsigned int *)0X4001080C &= ~(1<<2);
    while(1);
}


void SystemInit(void)
{
    
}

 

posted on 2020-09-03 19:34  明净  阅读(274)  评论(0编辑  收藏  举报