STMCU小助手
发布时间:2022-11-20 16:28
|
主要内容:- i( I- U2 }/ t4 l, b2 P 1)常用C语言讲解; 2)寄存器地址名称映射解读。 6 n" _; J; h1 d) E1 g/ b- g 1.常用C语言+ c# k7 L5 M( ]3 r; g 1.1 位操作:6种位操作运算符 1) 按位与:&. {2 g' Y- q! N. k! T 例:1011&0010=0010 2) 按位或:| 例:1011|0010=1011% e" v% }3 y! j; N: J. u 3) 按位异或:^ 例:1011^0010=10014 a7 q' b2 V. g1 r# L 4) 取反:~7 e0 z% d j. b2 v1 z G 例:~1011=0100 5) 左移:<< 例:0110<<1=1100 6) 右移:>> 例:0110>>1=0011+ p# M- G: p' ?0 I 7) 组合:按位与后赋值:&=' D/ ?; @% }$ r , c' M( l0 C* L2 n. x
1.2 define宏定义关键词 M% |* Y; E* e9 L p& [ define是C语言中的预处理命令,用于宏定义,可提高源代码的可读性,为编程提供方便。, W5 D1 n) [+ j, f# t1 t2 e 常见格式: #define 标识符 字符串 标识符为所定义的宏名。字符串可以是常数、表达式、格式串等。! [6 K5 [& W, D% W6 l9 F 例:
定义标识符SYSCLK_FREQ_72MHz的值为72000000。& _2 g5 w$ z- a( Z7 s! u 1.3 ifdef条件编译 单片机程序开发过程中,经常会遇到一种情况,当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。条件编译命令最常见的形式为:: @, C8 B" g: r5 v! S #ifdef 标识符0 R2 H- a$ E# E l6 j 程序段1 #else 程序段25 s- c4 F( O, ]& C6 }* M3 x #endif/ x+ ^, [5 G" d$ j& n M6 p3 ?9 T 例:' y8 Q; M, d3 f
1.4 extern变量申明/ G8 g5 j! \3 P. |+ z C语言中extern可以置于变量或函数前,以表示变量或函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找定义。对于extern申明变量可以多次,但定义只有一次。5 K( {( m& |6 m4 f0 } . F9 U3 J2 o7 f4 T$ b$ k& ^' P 1.5 typedef类型别名 定义一种类型的别名,而不是简单的宏替换。可以用作同时声明指针型的多个对象。 typedef unsigned char uint8_t;& R! k3 M) d T$ f typedef unsigned short int uint16_t; typedef unsigned int uint32_t; typedef unsigned __int64 uint64_t; 1.6 结构体:构造类型 Struct结构体名{4 `( a9 P' l- s, Y) D9 A# i: ? 成员列表1; 成员变量2;% Q1 \1 E5 U0 r+ I( @; L! D 。。。 }变量名列表; 在结构体申明的时候可以定义变量,也可以申明之后定义,方法是:2 u# X: m$ A6 f0 p. X* s Struct 结构体名字 结构体变量列表;: X) J) K5 T- u 作用:同一类型可以用数组,不同类型可以用结构体组织。 结构体可扩展性强。 例:7 p4 a2 r8 f/ H' m) w9 l
1.7 static static申明的局部变量,存储在静态存储区。. m3 Y6 q9 E: s2 W; r+ w) h1 O4 A 它在函数调用结束后,不会被释放,值会一直保留下来。 所以说static申明的局部变量,具有记忆功能。 2. MDK中寄存器地址名称映射分析 t7 C4 w" X* L( B9 r 概念:对MCU,一切底层配置,最终都是配置寄存器。 STM32中操作:/ F/ \( x1 f( U9 \' q ~ GPIOA->ODR=0x00000000;" v! H- j2 F" {0 ?$ }2 |9 L 问题:值0x00000000是怎么赋值给GPIOA的ODR寄存器地址的?即GPIOA->ODR这种写法,是怎么与GPIOA的ODR寄存器地址映射起来的?理解了下面这张图就能明白。 / r, [6 r! B3 D; `7 M/ C; u, l
———————————————— 版权声明:天亮继续睡 5 k1 _* l- b" \) z) R& N3 E* Y+ } |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版