电子产业一站式赋能平台

PCB联盟网

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

Keil仿真调试STM32与LED

[复制链接]

397

主题

397

帖子

2463

积分

三级会员

Rank: 3Rank: 3

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

4buhvhdvco164029378112.png

4buhvhdvco164029378112.png
$ q& r9 P3 U* P9 c! h0 z
. J* |- L# j; Y% I. K0 J
今天给大家分享一下STM32 流水灯简单的仿真吧,我感觉这个提供有用的,但是自己也是第一次使用,主要是感觉曲线很高级。在PWM中查看脉宽很有用。
# R% \( T) E/ M
. J) j6 ~" `# ~1 F8 O/ G) ^! H" }code: led.c3 Q: `% B; |5 K1 j  [3 _+ o$ i1 _
  • #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端口}
    / E1 @8 ?  t* ^. O- ncode: mian.c
    8 |1 d( B1 q' I
  • #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); // 延时,}}
    0 K2 k0 w7 ]$ \2 k6 b/ f; e总结:
    / H. l5 H; f7 R/ m" F' z* J9 J/ u: K1、在进行不同功能函数的编写的时候,最好在USER文件夹下面建一个对应的文件,注意有C文件,那么就一定有H文件。" x7 `% s% w+ Q( y7 o; V8 b5 D1 ?
    2、在编译C文件的时候,首先在配中找到对应的H文件的文件夹目录。: [0 A8 M* A% W/ \& r+ m$ g6 H2 e
    3、不同的芯片对应的库函数具有一定的差异,所以在进行引入库的时候,可能会出错误。
    ' g& W& `" S  y4、如果在编译的时候出现相关的库函数文件无法正常的打开,那么首先需要查看是否指定相关的路径。7 o$ E2 L' j4 @6 P+ F
    5、在魔术棒中的文件的输出最好都定义到自己的文件夹中,这样便于进行需要找。7 r6 z6 q$ [; F

    7 z/ R4 J  G4 w$ ~ 配置仿真:' G( v  b' c+ Z* C
    1,选择使用对应的CPU即可
    ) ~  `5 n& N4 \. q  G

    dfxgt0nh3y064029378212.png

    dfxgt0nh3y064029378212.png
    . P$ C# f7 _* U2 T6 M
    ) y7 L; b8 E* ]9 ^% C
    2,查看状态配置
    - B5 a  ~" q2 {9 r% h% O

    0pqz53f0yyh64029378312.png

    0pqz53f0yyh64029378312.png

      F9 Y( t6 \0 c9 N + O& `1 L+ |( c6 @+ `% P' X
    3,仿真结果; r  b8 j8 s  q+ D: M* B1 b7 S' X% ?

    332l4ibcifw64029378413.png

    332l4ibcifw64029378413.png

    ) N' }$ I- Z4 x
    8 m. @0 [8 M* B8 [$ N4 Y; ~4,最后仿真的结果:时间与单片机上实际运行的时间一致,如果不一致,请查看晶振或者时钟配置。
    : h$ s5 a! |. i  n8 b1 X& Y==========8 m( j% ?. Y: I- m' T4 `+ O( _9 [8 H/ B
    往期回顾:ST官方的STM32CubeMX培训文档( F9 d5 f2 q% G& \
    小白都看得懂的STM32的DMA知识
    0 v5 B  I6 H- L, U) Y1 S# o( tSTM32CubeMX的外部中断的使用
    - j! L! n3 S4 s3 V% R/ l& u. u% [  HADC的低功耗和阻抗问题
    3 L2 P# X$ U* p9 j- v9 f利用STM32CubeMX解读时钟树
    ! y) g4 H$ m" ~==========原文链接:请点击阅读原文
    0 {) j  v) E: I- V作者:【程序梦工厂】
    ; f3 r& ?+ F9 F( }% @( A, @* `  }- r  T7 ?! W2 o( h

    6 q- f. e, D+ f9 }4 k+ {& R6 S

    u55kbosryja64029378513.png

    u55kbosryja64029378513.png

    ! a# X5 j/ H7 A0 J/ F, s. J1 ?0 E  S' |2 |4 f6 V5 V

    gilgefetag464029378613.png

    gilgefetag464029378613.png
    3 Z' r$ `2 T1 |$ W2 I

    # G" j' d# o' M7 r. E) _

    sfcuhjdnn2c64029378713.png

    sfcuhjdnn2c64029378713.png
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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