STM32F030CCT6芯片手册:ARM Cortex-M0微控制器

需积分: 14 7 下载量 169 浏览量 更新于2024-07-15 收藏 1.04MB PDF 举报
"STM32F030CCT6是意法半导体(STMicroelectronics)生产的一款基于ARM Cortex-M0内核的32位微控制器,适用于多种嵌入式应用,尤其注重低功耗和高性价比。这款芯片提供16KB到256KB的闪存以及4KB到32KB带硬件奇偶校验的SRAM。它拥有丰富的外设接口,包括定时器、ADC、通信接口,并能在2.4V至3.6V的电压范围内工作。" STM32F030CCT6的主要特性包括: 1. **处理器核心**: 内置ARM Cortex-M0 CPU,工作频率最高可达48MHz,提供了高效能的计算能力。 2. **存储器**: 提供16KB到256KB的Flash内存,用于存储程序代码,以及4KB到32KB的SRAM,用于数据处理和临时存储,SRAM还带有硬件奇偶校验功能,提高了数据安全性。 3. **CRC计算单元**: 可用于检测和校验数据完整性。 4. **电源管理**: 支持数字和I/O电源供应,范围在2.4V至3.6V,同时具备模拟电源供应,同样在2.4V至3.6V之间。具有POR/PDR(上电/掉电复位)功能,以及睡眠、停止和待机三种低功耗模式。 5. **时钟管理**: 支持4MHz到32MHz的晶体振荡器,32kHz的RTC振荡器并可校准,内置8MHz RC振荡器可选6倍频,还有40kHz的RC振荡器。 6. **I/O端口**: 提供高达55个快速I/O端口,所有I/O可映射到外部中断向量,其中最多55个端口支持5V耐受能力,增强了系统的灵活性和兼容性。 7. **DMA控制器**: 包含5通道DMA控制器,可高效处理数据传输,减轻CPU负担。 8. **ADC**: 集成12位、1微秒ADC,最多16个输入通道,转换范围为0到3.6V,且ADC电源可单独设置在2.4V至3.6V之间。 9. **RTC与报警功能**: 配备日历实时钟,带有报警和周期性唤醒功能,可在停止或待机模式下保持工作。 10. **定时器**: 提供11个定时器,包括基本定时器、高级定时器和通用定时器,适用于各种定时和计数应用。 此外,STM32F030CCT6还支持多种通信接口,如UART、SPI、I2C等,使其能够轻松连接到各种外设和传感器,广泛应用于物联网设备、消费电子、工业控制等领域。通过这些特性,STM32F030CCT6为设计者提供了强大的工具,以实现复杂而高效的嵌入式系统解决方案。

def Grad_Cam(model, image, layer_name): # 获取模型提取全链接之前的特征图 new_model = nn.Sequential(*list(model.children())[:44]) print(new_model) new_model.eval() feature_maps = new_model(image) # 获取模型最后一层卷积层 target_layer = model._modules.get(layer_name) # 将模型最后一层卷积层的输出结果作为反向传播的梯度 gradient = torch.zeros(feature_maps.size()) # 返回一个形状与feature_maps相同全为标量 0 的张量 gradient[:, :, feature_maps.size()[2]//2, feature_maps.size()[3]//2] = 1 target_layer.zero_grad() # 将模型中参数的梯度置为0 feature_maps.backward(gradient=gradient) # 获取模型最后一层卷积层的输出结果和梯度 _, _, H, W = feature_maps.size() output_activations = feature_maps.detach().numpy()[0] gradients = target_layer.weight.grad.detach().numpy() # 计算特征图中每个像素点的权重 weights = np.mean(gradients, axis=(2, 3))[0] cam = np.zeros((H, W), dtype=np.float32) for i, w in enumerate(weights): cam += w * output_activations[i, :, :] # 对权重进行归一化处理 cam = np.maximum(cam, 0) cam = cv2.resize(cam, (1440, 1440)) cam = cam - np.min(cam) cam = cam / np.max(cam) # 将热力图叠加到原图上 heatmap = cv2.applyColorMap(np.uint8(255 * cam), cv2.COLORMAP_JET) heatmap = np.float32(heatmap) / 255 image = image.detach().numpy() image = np.transpose(image, (0, 2, 3, 1)) img_CCT = cv2.imread("F:/BaiduSyncdisk/python/svm_CCT/picture CCT_CP/2L5830N023_CCT.png") img_CP = cv2.imread("F:/BaiduSyncdisk/python/svm_CCT/picture CCT_CP/2L5830N023_CP.png") img_CCT = cv2.resize(img_CCT, (1440, 1440)) img_CP = cv2.resize(img_CP, (1440, 1440)) cam_img = heatmap + np.float32(img_CCT[0]) cam_img = cam_img / np.max(cam_img) return np.uint8(255 * cam_img) 上述代码不显示热力图,怎么解决

2023-05-26 上传