电子产业一站式赋能平台

PCB联盟网

搜索
查看: 41|回复: 0
收起左侧

Keil仿真调试STM32与LED

[复制链接]

395

主题

395

帖子

2304

积分

三级会员

Rank: 3Rank: 3

积分
2304
发表于 2023-11-29 21:01:00 | 显示全部楼层 |阅读模式

4buhvhdvco164029378112.png

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

    dfxgt0nh3y064029378212.png
    ' T5 W& Q0 K& Z+ t- U

    6 M/ t) e  h( {) v2,查看状态配置+ Z# m2 S1 L- ]9 r4 ^

    0pqz53f0yyh64029378312.png

    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

    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

    u55kbosryja64029378513.png

    0 Z% w0 n/ g) T" F! r; L4 t
    * J$ X7 M6 T/ R# a+ _7 H/ x

    gilgefetag464029378613.png

    gilgefetag464029378613.png
    7 G5 c8 M- F/ t7 g$ k1 m

    . t3 ^2 ]; J: I3 z$ w! c

    sfcuhjdnn2c64029378713.png

    sfcuhjdnn2c64029378713.png
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表