初識stm32 性能
St 意法半導體 SOC 產商(使用Arm內核進行外設產品開發)
Arm Arm Ip受權商(開內核標準提供給SOC產商使用)
32 便是32 位 32bit
M 微控制器 (stc ,stm,NXp,Inter87系列,Atmel)內存
產生背景:傳統的8 位和16 (51mcu,AVR)處理器已經沒法知足市場和技術變動的需求,從多廠家紛紛研發新一代的微控制器32位控制器,St Nxp等廠商。開發
STM8和 STM32 分類:產品
32 位控制器it
內核 Cortext -M0 STM32-F0 入門級
STM32-L0 低功耗
內核 Cortext-M3 STM32-F1 基礎型 主頻72mhz
STM32-F2 高性能
STM32-L1 低功耗
STM32-F3 混合信號io
內核 Cortext-M4 STM32-F4 高性能 主頻180Mhz
STM32-L4 低功耗
STM32-F7 高性能編譯
8位控制器
超級版6502 內核 STM8S 標準系列
STM8AF 標準汽車應用
STM8AL 低功耗汽車應用
STM8L 低功耗入門
命名方法:基礎
F表示: 基礎類型原理
引腳數 ; V :100 C :48 R:64 Z :144 B:208 N:216
falsh 大小 E :512kB C:256 I 2048
T:QFP
6:-40~85
原理Io口分配方法:
系統IO
電源: VBAT VSS,VDD,VDDA,VSSA VREF+,VEREF-
晶振io mainT IO ,RTC 外部時晶振 Io
下載Io RX,TX,JTMS,JTCK,JTDI,JTDO,NJTRST
啓動IO BOOT0 ,BOOT1
復位IO NRST
專用IO I2C,SPI,SDIO,FSMC,CAN,ADC,DAC,
存儲器分類:
CODE 0x0000 0000---0x1fff ffff
SRAM 0x2000 0000---0x3fff ffff
外設 0x4000 0000---0x5fff ffff
FSMC(b1-b2) 0x6000 0000---0x7fff ffff
FSMC(b3-b4) 0x8000 0000---0x9fff ffff
FSMC 寄存器 0xA000 0000---0xafff ffff
未使用 0xD000 0000---0xDfff ffff
Cortext-m3內部外設 0xE000 0000 ---0xffff ffff
存儲器映射:給存儲器分配地址的過程
寄存器:根據每一個單元功能不一樣,以功能爲命名給已分配地址的內存單元所取得別名
寄存器映射:給已經分配好地址且有特定功能的內存單元取別名的過程
本質 :寄存器就是分配好的地址
步驟
1 新建項目
Test 項目添加startup 文件 main.c文件 編譯 出錯 在main.c 中添加 SystemInit
2 編輯main.c
操做GPIOx 基本步驟
(1)初始化時鐘 (時鐘是stm32心臟,沒有它沒法運行)
(2 )配置GPIOB 模式 速度
(3)設置爲輸出或者輸入
使用Stm32f10x 中文參考手冊找到 RCC 地址 爲: 04002 1000
可知 GPIOB0 在APB2 因此使能時鐘APB2 En RCC地址加上 偏移地址
可得:0x40021018
使能時鐘 GPIOB
*(unsigned int*) 0x40021018 |=((1)<<3)
在手冊中的存儲印象找到GPIOB 地址爲40010c00 GPIOB0地址 = GPIOB地址+偏移地址
可得 *(unsigned int *) 0x40010c00|=(1<<4*0);
GPOB0地址爲 :0x40010c00
配置GPIOB0 爲輸出 GPIOB0——ODR 地址爲:GPIOB0+偏移地址
可得
*(unsigned int *)0x40010c0c&=~((1<<0))
源程序
#include "stm32f10x.h"
void SystemInit(void) { } int main(void) { //設置RCC時鐘 *(unsigned int *)0x40021018|=((1)<<(3)); // 配置 GPIOB0 *(unsigned int *)0x40010c00|=((1)<<(4*0)); //GPIOB0_ODR Set out; *(unsigned int *)0x40010c0c&= ~((1<<0)); }