STM32
直播中

乐骞添

7年用户 984经验值
私信 关注
[问答]

如何对基于STM32F103R6的跑马灯用Keil编译器进行仿真呢

怎样去设计一种基于STM32F103R6的跑马灯?
如何对基于STM32F103R6的跑马灯用Keil编译器进行仿真呢?

回帖(1)

何柳青

2021-12-14 09:14:23
一,打开文件(可以随文下载放置在文档中打开)。(如下图1所示)

  

  

  图1
  二,调整原理图大小,适合可视,另存工程文件。(如下图2,3,4所示)

  

  

  图2
  
  

  

  图3
  
  

  

  图4
  三,点击Source Code标签。(如下图5所示)

  

  

  图5
  四,编辑main.c Proteus8.9 VSM Studio Keil编译器仿真UCOSII_STM32F103R6_系列001_跑马灯 (如下图6所示)
  五,Main.c 代码:
  #include “led.h”
#include “delay.h”
#include “sys.h”
#include “usart.h”
#include “includes.h”
  //START 任务
//设置任务优先级
#define START_TASK_PRIO 10 ///开始任务的优先级为最低
//设置任务堆栈大小
#define START_STK_SIZE 128
//任务任务堆栈
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *pdata);
  //LED0任务
//设置任务优先级
#define LED0_TASK_PRIO 7
//设置任务堆栈大小
#define LED0_STK_SIZE 128
//任务堆栈
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
//任务函数
void led0_task(void *pdata);
  int main(void)
{
delay_init(); //延时初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置
uart_init(57600); //串口波特率设置
LED_Init(); //LED初始化
delay_ms(500);
  OSInit();                                  //UCOS初始化 OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO); //创建开始任务 OSStart();                                 //开始任务   }
  //开始任务
void start_task(void pdata)
{
OS_CPU_SR cpu_sr=0;
pdata=pdata;
OS_ENTER_CRITICAL(); //进入临界区(关闭中断)
OSTaskCreate(led0_task,(void
)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO);//挂起开始任务
OS_EXIT_CRITICAL(); //退出临界区(开中断)
}
  //LED0任务
void led0_task(void *pdata)
{
while(1)
{
delay_us(50000);
LED0=~LED0;
printf(“LED0变换!rn”);
delay_us(50000);
LED1=~LED1;
printf(“LED1变换!rn”);
}
}
  六,点击构建工程按钮,编译工程。(如下图6所示)

  

  

  图6
  七,点击窗口左下方仿真按钮,可见虚拟LED显示。 (如下图7,8,9所示)

  

  

  图7
  
  

  

  图8

  

  

  图9
  八,选择release,点击构建工程按钮,编译工程生成Hex文件。(如下图10所示)
  
  

  

  图10
举报

更多回帖

发帖
×
20
完善资料,
赚取积分