4buhvhdvco164029378112.png
+ {$ M' ]6 i1 c+ l6 _# W& `
7 L6 U2 w7 k% R/ o, v今天给大家分享一下STM32 流水灯简单的仿真吧,我感觉这个提供有用的,但是自己也是第一次使用,主要是感觉曲线很高级。在PWM中查看脉宽很有用。' w* `& F$ l& F" A' }
+ z- I! t0 ~& M; {# gcode: led.c
1 p7 M- @, o) j% ^; I/ O4 Z- `! c#include "led.h"#include "delay.h"/*GPIO的控制寄存器的配置1、配置输出引脚2、打开对应的输出的寄存器的时钟3、配置引脚输出的模式:强上拉、推完、开漏输出4、配置输出的速度。*/void Led_funcing(){GPIO_DeInit(LED_GPIO_PORT);// 注意这里的函数非常的重要,这里是将对应的GPIO端口初始化成默认的样子,因为这个端口可能在以前使用过,其他的配置可能发生了改变GPIO_InitTypeDef GPIOC_LED_Init; // 定义GPIO的结构体,也就是外设的结构体RCC_APB2PeriphClockCmd( LED_GPIO_CLK,ENABLE); //打开对应的GPIO的时钟,注意这里不同的外设可能挂载的时钟不同,所以需要开原理图,GPIOC_LED_Init.GPIO_Pin=LED_GPIO_PIN ; // 配置需要使用的引脚GPIOC_LED_Init.GPIO_Mode=GPIO_Mode_Out_PP; //配置引脚的输出的模式GPIOC_LED_Init.GPIO_Speed=GPIO_Speed_50MHz; // 配置输出的频率,这个在输入的时候不需要配置GPIO_Init(LED_GPIO_PORT,&GPIOC_LED_Init); // 使用初始化函数初始化刚刚定义的结构体,以及对应的GPIO端口}
" \$ v; T/ e) r% J/ P9 Ycode: mian.c
: j V* |$ m) W' s#include "stm32f10x.h"#include "led.h"#include "delay.h"/*功能的实现,注意在KEIL5中不要使用中文的空格这样将会出现错误。重点,重点,重点*/int main(){Led_funcing();// int k=5;while(1){GPIO_SetBits(LED_GPIO_PORT, LED_GPIO_PIN ); // 将对应的GPIO端口对应的引脚设置为高电平delay(10000);//延时GPIO_ResetBits(LED_GPIO_PORT, LED_GPIO_PIN); // 将对应的GPIO端口对应的引脚设置成低电平delay(10000); // 延时,}}
/ b5 I* S/ u9 H总结:4 b6 j" n+ w1 a
1、在进行不同功能函数的编写的时候,最好在USER文件夹下面建一个对应的文件,注意有C文件,那么就一定有H文件。
5 S# M- J- e+ L: t' d8 F2、在编译C文件的时候,首先在配中找到对应的H文件的文件夹目录。/ k3 L8 v( }0 E0 j
3、不同的芯片对应的库函数具有一定的差异,所以在进行引入库的时候,可能会出错误。+ ~* \4 m: ^( Z/ j0 V
4、如果在编译的时候出现相关的库函数文件无法正常的打开,那么首先需要查看是否指定相关的路径。
( e( J& R' _ J' A9 i: c; R5 K: o5、在魔术棒中的文件的输出最好都定义到自己的文件夹中,这样便于进行需要找。: \) E/ R0 r9 G; G
( M8 P, X2 [# W! Q* k 配置仿真: w* c$ l+ j7 m$ W0 |$ r1 P" I' a
1,选择使用对应的CPU即可
' O8 I# A F8 C$ u, [+ } C4 O
dfxgt0nh3y064029378212.png
' T5 W& Q0 K& Z+ t- U
6 M/ t) e h( {) v2,查看状态配置+ Z# m2 S1 L- ]9 r4 ^
0pqz53f0yyh64029378312.png
! Y) R* y7 x6 t7 e" m1 q
* I0 ^& V: s) k% b
3,仿真结果
1 N+ g/ v; V8 K7 x* K
332l4ibcifw64029378413.png
4 f7 e' N( w0 @" b4 _
6 k) B# d- @5 R( M
4,最后仿真的结果:时间与单片机上实际运行的时间一致,如果不一致,请查看晶振或者时钟配置。- z/ [3 Q' ^8 B9 g" X: r$ K
==========8 J% X8 ?) [) x. P+ M
往期回顾:ST官方的STM32CubeMX培训文档
$ [5 q' u8 T8 t8 C, T小白都看得懂的STM32的DMA知识% h2 V- p" _' [+ n% K6 A; U0 K# Q
STM32CubeMX的外部中断的使用
+ H% k; p* i2 U* CADC的低功耗和阻抗问题
8 g9 t1 p% a' w/ l3 B利用STM32CubeMX解读时钟树
/ G1 o% n3 }% A2 ?==========原文链接:请点击阅读原文
/ Y# x6 q) o, {. N+ B作者:【程序梦工厂】
$ T6 f7 c @1 b- b
$ K) k8 y5 i2 c+ f; E5 R0 K$ C: X& i9 A$ Q* l- R0 x
u55kbosryja64029378513.png
0 Z% w0 n/ g) T" F! r; L4 t
* J$ X7 M6 T/ R# a+ _7 H/ x
gilgefetag464029378613.png
7 G5 c8 M- F/ t7 g$ k1 m
. t3 ^2 ]; J: I3 z$ w! c
sfcuhjdnn2c64029378713.png
|