keil5在波形仿真的时候出现 Unknown Signal. 的解决方法

在跟着STM32视频学习的时候,在仿真环节,自己的软件弹出"Unknown Signal."的对话框。在认真和老师的视频对照仿真环节设置的时候发现了端倪,这就记录分享解决方法。

本文仅发布在CSDN 青云双青 和我的个人博客,其他地方出现均为搬运

问题复现

编译代码、点击Debug按钮,然后点击 Logic Analyzer,在点击 Setup 按钮后会弹出 Setup Logic Analyzer 对话框,然后按照你设定的GPIO端口和引脚进行装载,但是此时,弹窗出现了!

在这里插入图片描述

解决方法

那么接下来你就跟着我的设置一步一步来,保证你可以正常使用仿真!
仿真前的设置

  • 首先编译代码,先保证代码不出问题
  • 其次点击魔术棒,到 Debug 选项卡进行设置
  • 当然啦,要仿真的话点击 Use Simulator 选择按钮

然后呢,你的界面可能是这样的

默认的设置
这个就是没有经过设置的界面,重要设置的地方就是方框里面的东西。
第一个空需要修改为

DARMSTM.DLL

第二个空需要修改为
我这里以我用的芯片 STM32F103C8T6 为例说明

-pSTM32F103C8

设置完成后如图

在这里插入图片描述
点击OK即可,然后再次编译,然后开始 Debug 仿真

下面我以我自己设置的对PC13引脚的电平变化仿真为例说明仿真情况

我的相关的GPIO初始化的代码

void LedGpioInit(void)
{
	GPIO_InitTypeDef  GPIO_InitStruct;	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  	GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_13;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStruct);	
}

我的相关的执行闪烁的代码

void LedControl(void)
{
	GPIO_SetBits(GPIOC,GPIO_Pin_13);
	SysTickDelayMs(1000);
    GPIO_ResetBits(GPIOC, GPIO_Pin_13);
	SysTickDelayMs(1000); 	
}

最后置于主函数的死循环中

int main(void)
{	
	while(1)
	{
		LedControl();		
	}
}

仿真的效果

效果
最后的效果还可以,几乎完全接近1s电平反转一次

注意的地方

  • 对某个端口的某个引脚的设置方法为,此处以PC13为例
PORTC.13 然后回车即可
  • 在仿真的时候记得将下面的Display Type设置为Bit
  • 可以开启多个的引脚的波形图,也可以设置不同的波形颜色
  • 可以点击ZOOM里面的IN-OUT-ALL对波形的输出进行缩放,方便查看

本文使用MarkDown语法编辑,如有疑问可以私信或者在下方评论留言!

在使用Dev C++进行调试时,遇到“program received signal ?,unknown signal”这样的错误提示,通常意味着程序在运行过程中接收到了一些未知的信号。这种情况可能由多种原因引起,以下是一些常见的原因及解决方法: 1. **数组越界**: 访问数组时超出了其边界,导致访问了非法内存地址。 ```cpp int arr[10]; for(int i = 0; i <= 10; ++i) { // 错误:i <= 10 应该为 i < 10 arr[i] = i; } ``` 2. **指针错误**: 使用未初始化或已释放的指针,导致访问非法内存。 ```cpp int* ptr; *ptr = 10; // 错误:ptr 未初始化 ``` 3. **内存泄漏**: 程序中分配的内存没有被正确释放,导致内存泄漏。 ```cpp int* ptr = new int[10]; // 忘记释放内存 ``` 4. **栈溢出**: 递归调用过深,导致栈溢出。 ```cpp void recurse(int n) { if(n == 0) return; recurse(n + 1); // 错误:应递减n } ``` 5. **非法指令**: 编译后的代码中包含了非法指令,导致程序崩溃。 **解决方法**: 1. **检查代码**:仔细检查代码中的数组和指针操作,确保没有越界访问或使用未初始化的指针。 2. **使用调试工具**:利用Dev C++的调试功能,逐步执行程序,观察变量的值和程序的执行流程。 3. **添加调试信息**:在代码中添加调试信息,如打印变量的值,帮助定位问题。 4. **更新编译器**:确保使用的是最新版本的Dev C++,有时更新编译器可以解决一些未知的问题。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值