Thông báo

Collapse
No announcement yet.

Giải thích về truy nhập bit trong STM32f103

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Giải thích về truy nhập bit trong STM32f103

    Thân gửi các bạn
    Mình đag tìm hiểu về dòng MCU STM32. Trong User manual có đoạn sau:
    A mapping formula shows how to reference each word in the alias region to a corresponding
    bit in the bit-band region. The mapping formula is:
    bit_word_addr= bit_band_base+ (byte_offsetx 32) + (bit_number× 4)
    where:
    bit_word_addris the address of the word in the alias memory region that maps to the
    targeted bit.
    bit_band_baseis the starting address of the alias region
    byte_offsetis the number of the byte in the bit-band region that contains the targeted bit
    bit_numberis the bit position (0-7) of the targeted bit.
    Example:
    The following example shows how to map bit 2 of the byte located at SRAM address
    0x20000300 in the alias region:
    0x22006008 = 0x22000000 + (0x300*32) + (2*4).
    Writing to address 0x22006008 has the same effect as a read-modify-write operation on bit
    2 of the byte at SRAM address 0x20000300.
    Reading address 0x22006008 returns the value (0x01 or 0x00) of bit 2 of the byte at SRAM
    address 0x20000300 (0x01: bit set; 0x00: bit reset).



    Như vậy theo mình hiểu là để truy nhập 1 bit trong thanh ghi sẽ dùng công thức như trên.
    Ví dụ như thanh ghi GPIOA_CRL có add là: ( 0x40010800+0x00). 32 bit như sau:

    CNF7[1:0] MODE7[1:0] CNF6[1:0] MODE6[1:0] CNF5[1:0] MODE5[1:0] CNF4[1:0] MODE4[1:0]


    CNF3[1:0] MODE3[1:0] CNF2[1:0] MODE2[1:0] CNF1[1:0] MODE1[1:0] CNF0[1:0] MODE0[1:0]

    Khi đó truy nhập bit 8 của thanh ghi sẽ có địa chỉ là: 0x40010800+(0x00*32)+(8*4)=0x40010832

    Mọi người giúp mình xem mình hiểu như thế đã đúng chưa.
    Thanks rất nhiều. Cùng học tập nào.

Về tác giả

Collapse

anhtuanakv Tìm hiểu thêm về anhtuanakv

Bài viết mới nhất

Collapse

Đang tải...
X