GD32 开发笔记

0x01 GPIO时钟使能的坑

使用GD32的GPIO引脚来控制 74HC595 ,发现引脚一直无法控制,始终输出3.3v,初始化环节应该是出了问题。用通俗的话来说,就是点灯点不亮

排查了MCU、光耦隔离芯片、被强行上拉等问题,最后发现是GD的GPIO时钟使能问题。

以下是错误使用方法:

    rcu_periph_clock_enable(RCU_SER | RCU_SCK);

修改为以下方法即可:

    rcu_periph_clock_enable(RCU_SER);rcu_periph_clock_enable(RCU_SCK);

日后想必也会经常需要验证GD32,留个点灯函数在这里

rcu_periph_clock_enable(RCU_GPIOC);
gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_13);
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);gpio_bit_set(GPIOC,GPIO_PIN_13);
gpio_bit_reset(GPIOC,GPIO_PIN_13);

0x02 微秒级延时函数

systick.c

#include "gd32f1x0.h"
#include "systick.h"volatile static uint32_t delay;#include "systick.h"volatile static float count_1us = 0;
volatile static float count_1ms = 0;void delay_decrement(void)
{if (0U != delay){delay--;}
}void systick_config(void)
{/* systick clock source is from HCLK/8 内部时钟的108M/8分频 */systick_clksource_set(SYSTICK_CLKSOURCE_HCLK_DIV8);count_1us = (float)SystemCoreClock/12000000;//延时1us需要的时钟数量 108M/8M = 13.5 count_1ms = (float)count_1us * 1000;//延时1ms需要的时钟数量 108M/8M *1000= 13500 
}void delay_1us(uint32_t count)
{uint32_t ctl;SysTick->LOAD = (uint32_t)(count * count_1us);SysTick->VAL = 0x0000U;SysTick->CTRL = SysTick_CTRL_ENABLE_Msk;do{ctl = SysTick->CTRL;}while((ctl&SysTick_CTRL_ENABLE_Msk)&&!(ctl & SysTick_CTRL_COUNTFLAG_Msk));SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;SysTick->VAL = 0x0000U;
}void delay_1ms(uint32_t count)
{uint32_t ctl;SysTick->LOAD = (uint32_t)(count * count_1ms);SysTick->VAL = 0x0000U;SysTick->CTRL = SysTick_CTRL_ENABLE_Msk;do{ctl = SysTick->CTRL;}while((ctl&SysTick_CTRL_ENABLE_Msk)&&!(ctl & SysTick_CTRL_COUNTFLAG_Msk));SysTick->VAL = 0x0000U;
}

systick.h

#ifndef SYSTICK_H
#define SYSTICK_H#include <stdint.h>void systick_config(void);
void delay_1ms(uint32_t count);
void delay_1us(uint32_t count);
void delay_decrement(void);#endif 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python代码分析和修复工具库之coala使用详解

概要 代码质量在软件开发中至关重要,保持代码的可读性、一致性和易维护性是每个开发者的目标。coala 是一个开源的代码分析和修复工具,旨在帮助开发者自动化代码质量检查,支持多种编程语言,包括 Python、C++、JavaScript 等。通过使用 coala,开发者可以方便地集成代码检查…

AI时代的软件工程:挑战与改变

人工智能&#xff08;AI&#xff09;正以惊人的速度改变着我们的生活和工作方式。作为与AI关系最为密切的领域之一&#xff0c;软件工程正经历着深刻的转变。 1 软件工程的演变 软件工程的起源 软件工程&#xff08;Software Engineering&#xff09;是关于如何系统化、规范化地…

input调用手机摄像头实现拍照功能vue

项目需要一个拍照功能&#xff0c;实现功能如下图所示:若使用浏览器则可以直接上传图片&#xff0c;若使用手机则调用手机摄像头拍照。 1.代码结构 <!--input标签--> <input ref"photoRef"type"file"accept"image/*"capture"envir…

Leetcode 3202. Find the Maximum Length of Valid Subsequence II

Leetcode 3202. Find the Maximum Length of Valid Subsequence II 1. 解题思路2. 代码实现 题目链接&#xff1a;3202. Find the Maximum Length of Valid Subsequence II 1. 解题思路 这一题的话是上一题3201. Find the Maximum Length of Valid Subsequence I的升级版&am…

基于多源数据的密码攻防领域知识图谱构建

源自&#xff1a; 信息安全与通信保密杂志社 作者&#xff1a;曹增辉 , 郭渊博 , 黄慧敏 摘 要 提高网络空间安全的密码攻防能力&#xff0c;需要形成可表示、可共享、可分析的领域知识模式和知识库。利用自顶向下的构建方法&#xff0c;并通过本体构建方法梳理密码攻防领域…

IPSec:互联网协议安全机制的深度解析与应用

目录 一、IPSec概述 二、IPSec的组成 三、IPSec的工作原理 四、IPSec的用途 IPSec&#xff08;Internet Protocol Security&#xff09;作为现代网络通信中不可或缺的安全基础设施&#xff0c;旨在为基于IP&#xff08;Internet Protocol&#xff09;的数据传输提供端到端的…

MySQL数据库锁详解

MySQL数据库锁详解 在多用户环境下&#xff0c;数据库锁用于保证事务的完整性和数据的一致性。MySQL提供了多种不同类型的锁&#xff0c;以适应不同的并发需求和性能考虑。本文将详细介绍MySQL中的锁机制&#xff0c;包括锁的类型、锁定机制的原理以及如何管理锁。 1. 锁的类…

【Linux】虚拟机安装openEuler 24.03 X86_64 教程

目录 一、概述 1.1 openEuler 覆盖全场景的创新平台 1.2 系统框架 1.3 平台框架 二、安装详细步骤 一、概述 1.1 openEuler 覆盖全场景的创新平台 openEuler 已支持 x86、Arm、SW64、RISC-V、LoongArch 多处理器架构&#xff0c;逐步扩展 PowerPC 等更多芯片架构支持&…

时间序列季节性和周期性

季节性 (Seasonality) 定义 季节性是指时间序列数据中由于自然、社会或经济因素&#xff0c;在固定且短期的时间间隔内&#xff08;如每年、每季度、每月或每周&#xff09;重复出现的模式或波动。 特点 固定周期&#xff1a;季节性波动有一个固定的周期。例如&#xff0c;…

【小工具】 Unity相机宽度适配

相机默认是根据高度适配的&#xff0c;但是在部分游戏中需要根据宽度进行适配 实现步骤 定义标准屏幕宽、高判断标准屏幕宽高比与当前的是否相等通过**&#xff08;标准宽度/当前宽度&#xff09; &#xff08;标准高度 / 当前高度&#xff09;**计算缩放调整相机fieldOfView即…

iptables 防火墙(一)

iptables 防火墙&#xff08;一&#xff09; 一、Linux 防火墙基础防火墙分类 二、iptables 的表、链结构规则表规则链数据包过滤的匹配流程 三、编写防火墙规则iptables 的安装iptables的基本语法规则的匹配条件通用匹配隐含匹配显式匹配 四、总结 在网络安全的世界里&#xf…

XRP对接文档

XRP对接文档 技术预研 参考文档 官方文档: https://xrpl.org/list-xrp-in-your-exchange.html 官方文档: https://xrpl.org/list-xrp-as-an-exchange.html#flow-of-funds 交易所对接XRP(内容齐全, 很推荐) https://blog.csdn.net/weixin_40396076/article/details/10020207…

基于51单片机的篮球计时器Proteus仿真

文章目录 一、篮球计时器1.题目要求2.思路3.仿真图3.1 未仿真时3.2 仿真开始3.3 A队进分3.4 B队进分3.5 比赛结束 4.仿真程序4.1 主函数4.2 时间显示4.3 比分显示4.4 按键扫描 二、总结 一、篮球计时器 1.题目要求 以51单片机为核心&#xff0c;设计并制作篮球计时器 基本功…

代码托管平台详解与比较

1. Gitee 1.1 平台简介 Gitee是中国本土的一个代码托管平台&#xff0c;类似于GitHub。它提供了版本控制、项目管理和代码托管等服务&#xff0c;特别适合中国的开发者和企业。 1.2 主要特点 1. 本地化支持&#xff1a;Gitee提供中文界面和文档&#xff0c;适合中国开发者使用…

电子游戏 - 星际争霸技术提高

提高《星际争霸》的胜率需要综合考虑多方面的因素&#xff0c;包括宏观管理、微操技巧、策略制定和游戏意识。以下是一些具体的建议&#xff0c;可以帮助你打好《星际争霸》并提高胜率&#xff1a; 1. 加强资源管理和经济发展&#xff08;Macro&#xff09; * 快速扩张&#x…

python实现符文加、解密

在历史悠久的加密技术中&#xff0c;恺撒密码以其简单却有效的原理闻名。通过固定的字母位移&#xff0c;明文可以被转换成密文&#xff0c;而解密则是逆向操作。这种技术不仅适用于英文字母&#xff0c;还可以扩展到其他语言的字符体系&#xff0c;如日语的平假名或汉语的拼音…

医院管理系统带万字文档医院预约挂号管理系统基于spingboot和vue的前后端分离java项目java课程设计java毕业设计

文章目录 仓库管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 仓库管理系统 一、项目演示 医院管理系统 二、项目介绍 基于springbootvue的前后端分离医院管…

SOLR数据导入和导出

情景 1、solr中的类型修改导致solr的core无法加载&#xff0c;只能删除core&#xff0c;重新创建。但是solr中的数据&#xff0c;只能从core心中导出&#xff0c;在导入新建的核心中。 2、试了几种方案&#xff0c;还是通过第三方freedev / solr-import-export-json的组件更加…

Spring框架(二)——IoC

1、什么是IoC IoC—Inverse of Control&#xff0c;控制反转&#xff0c;将对象的创建权力反转给Spring框架控制反转是为了降低程序耦合度&#xff0c;提高程序扩展力&#xff0c;达到OCP原则&#xff0c;达到DIP原则 OCP开闭原则&#xff1a;在软件开发过程中应当对扩展开放&…

跨阻放大器

#创作灵感# 最近涉及到微电流的监测项目&#xff0c;而里面的核心就是跨阻放大器&#xff0c;所以这里做一个简单的介绍&#xff0c;后续等项目完成了&#xff0c;再做一个实例的介绍。 #正文# 跨阻放大器&#xff08;Transimpedance Amplifier, TIA&#xff09;是一种将输入电…