在尝试安装 Ubuntu 系统时,选择 "Try or Install Ubuntu" 选项后立即出现黑屏卡死现象。该问题可能与显卡驱动兼容性相关,以下是完整的解决过程记录。
为GPIO单独创建一个类: GPIO.h
C++#pragma once
#ifndef __GPIO_H__
#define __GPIO_H__
#ifdef __cplusplus
extern "C"
{
#endif
#include "main.h"
#include "delay.h"
/* USER CODE BEGIN Includes */
#include <stdint.h>
void MX_GPIO_Init(void);
#ifdef __cplusplus
}
class GPIO
{
public:
GPIO_TypeDef *GPIOx; // 4字节
uint16_t Pin; // 2字节
// 默认填充2字节
GPIO(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint32_t Mode, uint32_t Pull, uint32_t Speed);
GPIO() = delete; // 禁用默认构造函数
void set();
void reset();
void toggle();
bool read() const;
void operator=(bool bit);
};
#endif
#endif /*__ GPIO_H__ */
事件是用于进程同步的 sc_event 类的对象。 流程实例可以在事件发生时(即,当事件被通知时)被触发或恢复。 任何给定的事件可能会在许多不同的场合被通知。 sc_event 有以下方法: 1. void notification():创建立即通知 2. 无效通知(const sc_time&),无效通知(double,sc_time_unit): a) 零时间:创建增量通知。 b) 非零时间:在给定时间创建定时通知,相对于调用函数notify时的模拟时间表示 3.cancel():删除此事件的任何待处理通知 a) 对于任何给定事件,最多可以存在一个待处理通知。 b) 立即通知无法取消。 限制条件: 1. sc_event 类的对象可以在精化或模拟期间构造。 2. 可以在精化或模拟期间通知事件,但在精化期间或从回调之一创建立即通知将是错误的: a) 阐述结束前, b) 详细阐述结束,或 c) 模拟开始。 给定事件不得有超过一个待处理通知: 1. 如果为已经有待处理通知的事件调用函数notify,则只有计划最早发生的通知才有效。 2. 计划在稍后时间发生的通知应取消(或从一开始就不再安排)。 3. 立即通知被认为早于增量通知发生,并且增量通知早于定时通知发生。这与调用函数notify 的顺序无关。 事件可以相互组合,也可以与计时器组合。
SystemC 使用模拟过程来模拟并发性。这不是真正的并发执行。 当多个进程被模拟为同时运行时,在特定时间仅执行一个进程。但是,模拟时间保持不变,直到所有并发进程完成其当前任务。 因此,这些进程在同一“模拟时间”上同时运行。