STM32
登录
直播中
乐骞添
7年用户
984经验值
私信
关注
[问答]
如何对基于STM32F103R6的跑马灯用Keil编译器进行仿真呢
开启该帖子的消息推送
编译器
跑马灯
STM32F103R6
怎样去设计一种基于
STM32
F103R6的跑马灯?
如何对基于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
一,打开文件(可以随文下载放置在文档中打开)。(如下图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
举报
更多回帖
rotate(-90deg);
回复
相关问答
编译器
跑马灯
STM32F103R6
求大佬分享Proteus
仿真
STM32F103R6
的
跑马灯
程序
2021-11-25
1055
如何对基于
STM32F103R6
的流水灯
进行
Proteus
仿真
呢
2021-12-15
5963
如何在MDK5上
进行
STM32
设计
跑马灯
程序并
进行
编译
及
仿真
?
2021-11-10
2343
STM32F103RBT6
串口问题!请大神!!
2012-08-03
7465
怎么实现基于
stm32f103zet6
的
跑马灯
设计?
2021-12-14
956
如何对
STM32F103R6
微控制
器
的串口通信USART
进行
Proteus模拟
呢
2021-12-13
2314
STM32
跑马灯
实验,
编译
通过 可以上传 LED灯就是不亮
2019-01-09
10063
stm32f103rbt6
加入ucosiii,
编译
不过去怎么办
2019-07-16
2150
怎样去设计一种基于
stm32f103r6
的模拟交通灯
呢
2021-11-10
2118
stm32f103r6
与pg12864lcd怎么连线?
2020-06-22
2438
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分