|
1.搭载STM32的开发环境1 c6 g, k' K8 \' M5 R/ P 1.安装jdk 2.安装STM32CubeMX( h: \/ Y$ T* {0 I, b3 G0 ]4 n 安装结果如下
Y1 ?- y) Y% I4 i: }9 _ 1.配置STM32CubeMX:安装HAL库 s" l' I# j5 [' z% p* t (1)选择自己想要安装的HAL库版本号 U2 I: _. P% c3 o$ O (2)下载HAL库,HAL库环境安装完成 安装结果如下
3.安装MDK5# z% d/ M9 \3 X- P% _ 2.利用HAL库新建keil5工程. U) F1 ~% K3 S' c& u. ^# z9 i 1.STM32CubeMX建项目4 i5 l: T' b; j 1.选择的单片机型号以及点击开始工程项目- L" M2 B: a* r7 t$ ?4 \" b E+ Y- q+ ^6 M0 @7 T 2.配置时钟,进入上面的RCC,有两个时钟,一个是HSE和LSE,将HSE那里设为Crystal/Ceramic Resonator 3.进入GPIO选择引脚 并且配置其工作模式:) Y K5 `; @" Q- T 选择了三个GPIO:PA0,PA1,PA2设置为了GPIO_output;以及一个PB5设置为外部中断源: 4.在GPIO界面里面点击PB5,对PB5的进行中断配置:7 u, y' N0 o/ |- y 5.在CLK Configuration中,进行时钟配置 6.进入Project Manager,进行工程设置点击生成工程与代码:$ H& c9 Z9 g: N6 C- ^ N# ~ 2.keil工程编写5 ?$ ^' y* H, w5 a 1.点击刚刚生成的keil5工程文件,双击main.c文件,在main函数上方进行编写一个中断函数HAL_GPIO_EXTI_Callback()以及自定义一个中断的标识符号flag/ ~3 R/ }7 [' m H+ U 输入以下代码 uint32_t flag=0; void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ if(GPIO_Pin == SWITCH_Pin){ GPIO_PinState pinState = HAL_GPIO_ReadPin(SWITCH_GPIO_Port,SWITCH_Pin);1 X4 ]* L( u) H. V3 D( ` if(pinState==GPIO_PIN_SET)8 s: K# w+ p' r9 b& u9 s { flag=1; }+ g1 W' R% Q Y , i2 s3 U8 j8 W( Q else if(pinState==GPIO_PIN_RESET) {5 H# N( A Y/ i) @/ B flag=0;2 `& P/ X4 N9 R0 Q1 C' G }# v, I4 `. f5 Z! L2 O3 \+ ] } : R' `, c$ u \6 p, F } 2.在main函数里的while(1)里面写上如下代码: if(flag1) {4 ^+ e* S8 C' O" U HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET); y) _) ?+ r/ ]: l# N% X HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);. ~' i$ v8 P/ t8 F3 r# ]# ^ HAL_Delay(1000);; Z; ^; ~6 J2 X9 v HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);6 q" y: _7 ^$ ~& c! @% R HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);9 R% N- F/ V. ? ~) A4 } HAL_Delay(1000);9 w% H/ G. Z4 b( w1 |" t7 { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET); HAL_Delay(1000); } else if(flag0) { HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);7 R a6 j( d5 ^5 e1 u$ v& [ HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);; ^4 B2 P Z i! s HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);+ s3 `; j* R: J/ _) f& L }: w/ h8 G& Q1 h! l# e* B$ v' X 3.程序烧录 实验结果如下
! ]( T+ A; d s4 G$ r$ } (三)proteus仿真9 H. J; p5 J; p! P+ t# k 1.搭建固定项目 [; i* G0 x) J0 F- ]" ?) V 1.新建工程) C1 L9 W8 I8 J 结果如下
2.绘制系统电路8 z P' o ^3 N! h 1.选择发光二极管,选择红、黄、绿三种颜色的led7 D* E9 h; \+ d, J8 W - u/ u# W( v( @* ?" {' Q 2.分别拖入原理框内,并与对应的端口相连接 : z3 y7 r$ d- F( h: b3 A 3.分别给3个LED配置电源+ E4 w7 F# f3 L: t4 ?7 @+ `$ B! }3 [. _ 1 s- m& x, S7 D) A- G( C 4.将开关拖入原理图内,与设置的外部中断端口相连,并配置电源, i& i) c C5 X) m 结果如下* W" f6 }) @$ B3 h. o) p6 j- t
' u: p5 {: n6 \. {# E( u 3.仿真运行, a9 h0 v9 ?" Y" S! O7 h 选对晶振频率,接入电网,开始仿真0 ~4 n, O( j) b( \; p4 d 结果如下 $ ]. J9 m& x4 q8 a% N
5 F5 X8 i& J( O; | |
#双节活动 1.在CubeMX中引用touchGFX出现的问题与解决
如何将STM32CubeMX生成的CMake工程导入STM32CubeIDE
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
STM32CubeCLT 1.22.0新版本发布
【下载问题解决】关于ST官网下载软件问题解决
STM32CubeMX 6.18.0新版本发布
【STM32U3评测】使用INS5699 RTC模组
CubeMX生成CubeIDE工程代码乱码
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
微信公众号
手机版