[STM32F1] Pretues和Keil使用stm32F103C6芯片实现跑马灯

[复制链接]
 楼主| 无法去污粉 发表于 2021-12-30 23:39 | 显示全部楼层 |阅读模式
一、Protues创建工程

添加好名称,不断下一步就行:

581261cdd2a39e198.png


 楼主| 无法去污粉 发表于 2021-12-30 23:40 | 显示全部楼层
 楼主| 无法去污粉 发表于 2021-12-30 23:41 | 显示全部楼层
 楼主| 无法去污粉 发表于 2021-12-30 23:42 | 显示全部楼层
 楼主| 无法去污粉 发表于 2021-12-30 23:43 | 显示全部楼层
二、pretues添加原件,构建电路图;
2461cdd3ab470be.png
 楼主| 无法去污粉 发表于 2021-12-30 23:45 | 显示全部楼层
 楼主| 无法去污粉 发表于 2021-12-30 23:45 | 显示全部楼层
二、keil做代码:
添加文件这里不做说明,注意一下几个点:
1.芯片使用stm32F103c6

2560261cdd410f213e.png
 楼主| 无法去污粉 发表于 2021-12-30 23:46 | 显示全部楼层
2.mdk的汇编文件随之改变
5137361cdd460e40ad.png
 楼主| 无法去污粉 发表于 2021-12-30 23:48 | 显示全部楼层
3.宏定义改成stm32F103c6的宏

7777361cdd4cdd05ff.png
 楼主| 无法去污粉 发表于 2021-12-30 23:49 | 显示全部楼层
4.主函数代码实现:

  1. #include "stm32f10x.h"
  2. GPIO_InitTypeDef GPIO_InitStructure;
  3. void delay(unsigned int ms)//时间不准确,只是一个简单的延迟
  4. {
  5.         for(int i = 0;i < 1000;i++)
  6.         {
  7.                 for(int j = 0;j < ms; j++);
  8.         }
  9. }
  10. int main(void)
  11. {
  12.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//初始化A口
  13.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1|GPIO_Pin_2                                                                                                                
  14.                                                                                                                                 |GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_5|GPIO_Pin_6 | GPIO_Pin_7;
  15.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  16.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  17.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  18.   while (1)
  19.   {
  20.                         for(int i = 0;i < 8;i++)//第一个灯到第8个
  21.                         {
  22.                                 GPIOA->BSRR = (1 << i);
  23.                                 delay(100);//亮
  24.                                 GPIOA->BRR = (1 << i);
  25.                                 delay(100);//灭
  26.                         }
  27.                         for(int i = 0; i <8; i++)//8个同时亮灭8次
  28.                         {       
  29.                           GPIOA->BSRR = 0xff;
  30.                                 delay(100);//亮                               
  31.                                 GPIOA->BRR = 0xff;
  32.                                 delay(100);//灭
  33.                         }
  34.         }
  35. }
  36. #ifdef  USE_FULL_ASSERT
  37. #endif
 楼主| 无法去污粉 发表于 2021-12-30 23:50 | 显示全部楼层
5.mdk中的.s文件中的SystemInit函数没有实现入口,可能会产生链接错误,所以在stm32F103_gpio.c中添加函数实现,为空即可。
 楼主| 无法去污粉 发表于 2021-12-30 23:55 | 显示全部楼层
 楼主| 无法去污粉 发表于 2021-12-30 23:56 | 显示全部楼层
6.生成.hex文件

5214861cdd6843875a.png
 楼主| 无法去污粉 发表于 2021-12-30 23:57 | 显示全部楼层
编译一下:
5792861cdd6c7dc8f1.png
 楼主| 无法去污粉 发表于 2021-12-30 23:58 | 显示全部楼层
四、Protues电路图整合Keil生成的.Hex文件
protues中右击芯片编辑属性添加.hex文件(mdk/Objects/);.

3378661cdd6f27b9ae.png

评论

仿真不卡?  发表于 2021-12-31 07:25
 楼主| 无法去污粉 发表于 2021-12-30 23:58 | 显示全部楼层
五、实验结果:
1到8个灯分别开始亮灭
6326561cdd726e07b4.png
 楼主| 无法去污粉 发表于 2021-12-30 23:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

807

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

56

主题

807

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部