打印
[STM32F1]

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

[复制链接]
434|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、Protues创建工程

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


使用特权

评论回复
沙发
无法去污粉|  楼主 | 2021-12-30 23:40 | 只看该作者

使用特权

评论回复
板凳
无法去污粉|  楼主 | 2021-12-30 23:41 | 只看该作者

使用特权

评论回复
地板
无法去污粉|  楼主 | 2021-12-30 23:42 | 只看该作者

使用特权

评论回复
5
无法去污粉|  楼主 | 2021-12-30 23:43 | 只看该作者
二、pretues添加原件,构建电路图;

使用特权

评论回复
6
无法去污粉|  楼主 | 2021-12-30 23:45 | 只看该作者

使用特权

评论回复
7
无法去污粉|  楼主 | 2021-12-30 23:45 | 只看该作者
二、keil做代码:
添加文件这里不做说明,注意一下几个点:
1.芯片使用stm32F103c6


使用特权

评论回复
8
无法去污粉|  楼主 | 2021-12-30 23:46 | 只看该作者
2.mdk的汇编文件随之改变

使用特权

评论回复
9
无法去污粉|  楼主 | 2021-12-30 23:48 | 只看该作者
3.宏定义改成stm32F103c6的宏

使用特权

评论回复
10
无法去污粉|  楼主 | 2021-12-30 23:49 | 只看该作者
4.主函数代码实现:

#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
void delay(unsigned int ms)//时间不准确,只是一个简单的延迟
{
        for(int i = 0;i < 1000;i++)
        {
                for(int j = 0;j < ms; j++);
        }
}
int main(void)
{
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//初始化A口
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1|GPIO_Pin_2                                                                                                                
                                                                                                                                |GPIO_Pin_3|GPIO_Pin_4 | GPIO_Pin_5|GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  while (1)
  {
                        for(int i = 0;i < 8;i++)//第一个灯到第8个
                        {
                                GPIOA->BSRR = (1 << i);
                                delay(100);//亮
                                GPIOA->BRR = (1 << i);
                                delay(100);//灭
                        }
                        for(int i = 0; i <8; i++)//8个同时亮灭8次
                        {       
                          GPIOA->BSRR = 0xff;
                                delay(100);//亮                               
                                GPIOA->BRR = 0xff;
                                delay(100);//灭
                        }
        }
}
#ifdef  USE_FULL_ASSERT
#endif

使用特权

评论回复
11
无法去污粉|  楼主 | 2021-12-30 23:50 | 只看该作者
5.mdk中的.s文件中的SystemInit函数没有实现入口,可能会产生链接错误,所以在stm32F103_gpio.c中添加函数实现,为空即可。

使用特权

评论回复
12
无法去污粉|  楼主 | 2021-12-30 23:55 | 只看该作者

使用特权

评论回复
13
无法去污粉|  楼主 | 2021-12-30 23:56 | 只看该作者
6.生成.hex文件

使用特权

评论回复
14
无法去污粉|  楼主 | 2021-12-30 23:57 | 只看该作者
编译一下:

使用特权

评论回复
15
无法去污粉|  楼主 | 2021-12-30 23:58 | 只看该作者
四、Protues电路图整合Keil生成的.Hex文件
protues中右击芯片编辑属性添加.hex文件(mdk/Objects/);.


使用特权

评论回复
评论
lihui567 2021-12-31 07:25 回复TA
仿真不卡? 
16
无法去污粉|  楼主 | 2021-12-30 23:58 | 只看该作者
五、实验结果:
1到8个灯分别开始亮灭

使用特权

评论回复
17
无法去污粉|  楼主 | 2021-12-30 23:59 | 只看该作者





使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

735

帖子

1

粉丝