草庐IT

GD_UniqueCodeInfo

全部标签

GD32F10x外部晶振配置108MHz系统时钟

嵌入式_GD32F10x外部晶振配置108MHz系统时钟文章目录嵌入式_GD32F10x外部晶振配置108MHz系统时钟前言一、时钟树与配置思路二、时钟配置过程三、晶振故障排查总结前言由于公司更改硬件设计选择使用新的型号兆易创新国产芯片,需要把以前的软件进行移植,新板子要求新的板子使用的外部8兆晶振,系统时钟要求达到108兆,在配置过程中踩了别人的坑,在此简单记录一下。注:本项目基于GD32F103CBT6硬件平台,使用标准库GD32F10x_Firmware_Library_V1.0.0(提示:此库坑多、慎用!)一、时钟树与配置思路GD32F10x使用M1内核时钟树如图所示,先根据构时钟树构

GD32F303调试小记(十)之LVGL移植(FreeRTOS)

一、前言在上文中,我们成功的移植进了FreeRTOS,接下来我们在此基础上,移入我们的LVGL图形界面库。二、LVGL一款用于绘制界面UI的开源库,让硬件资源更少的MCU跑出显示效果理想的界面。实际效果可以参考官方或者视频网站上开发者公布出来的界面效果。从官方的Github上来看,最早的公开为V5版本,V6和V7版本已经确定不再更新,目前LVGL官方团队仍在更新V8版本,我们可以看到V8里还有不少小版本。截至本文编写发布,LVGL正式发布的版本已至V8.3.7。从V8版本开始由于LVGL官方团队对API做了很大的调整,并不是很兼容V7及以前的版本。这里我们做个区分。使用的版本越新,意味着LVG

GD32F103C8T6入门——GPIO配置点亮LED

1.硬件GD32F103C8T6最小系统板ST-LINKV2下载器2.GPIO说明每个通用I/O端口都可以通过两个32位的控制寄存器(GPIOx_CTL0/GPIOx_CTL1)和两个32位的数据寄存器(GPIOx_ISTAT,GPIOx_OCTL)配置为8种模式:模拟输入,浮空输入,上拉输入,下拉输入,GPIO推挽输出,GPIO开漏输出,AFIO推挽输出和AFIO开漏输出。IO端口基本结构:3.GPIO外设3.1如果使用调试端口PB4则需要重映射为GPIO。//管脚复用时钟使能rcu_periph_clock_enable(RCU_AF);//PB4管脚默认是NJTRST,要当GPIO需要使

GD32使用CS1237通过ADC采集温度

GD32使用CS1237通过ADC采集温度一.CS1237的配置文档读和写的命令注:需要注意PGA的放大倍数,不要超出了CS1237的输入的范围,要不然会输出最大值。二.源码CS1237.h文件#ifndef__CS1237_H__#define__CS1237_H__#include"gd32f30x.h"#include"delay.h"#defineCLK_TIME50//max50us//****************************************************************************************************

GD32F103学习笔记(1)——搭建环境、编译烧写

一、搭建环境1.1官方资料GD32F10x资料下载1.2安装Keil5官网下载:http://www2.keil.com/mdk5/百度网盘:https://pan.baidu.com/s/1T_eF5NDYeq38bR0cqjiZkw提取码:562z阿里云盘:https://www.aliyundrive.com/s/giDvR2ShJR91.3下载SDK官网下载:http://www.gd32mcu.com/download/down/document_id/180/path_type/1百度网盘:https://pan.baidu.com/s/1vneR70WP9qm9SmyUVUpxU

GD32的硬件I2C调试记录

在测试GD32F450的硬件I2C时,碰到了I2C_FLAG_ADDSEND标志会自动清零的情况,导致一直开在while(!i2c_flag_get(I2C0,I2C_FLAG_ADDSEND));语句等待I2C_FLAG_ADDSEND标志位置位。数据手册关于主机模式I2C_FLAG_ADDSEND相关内容描述如下,只在读取I2C_STAT0和I2C_STAT1时会自动清除该标志查询相关资料,也发现大家有存在类似问题:https://www.amobbs.com/thread-5564156-1-1.html最终经过反复测试,确定,I2C的I2C_FLAG_ADDSEND在单步调试时,会被提

GD32F103 USBD CDC移植

firmwareversion:GD32F10x_Firmware_Library_V2.2.4模板工程:cdc_acm        GD32F103自带一个USBD,虚拟成串口设备来与上位机通信会比USART方便不少(主要是懒得接线~),GD官方给出的例子中结构还是很清晰的,本文仅记录一些要点。        在官方的cdc_acm工程中,程序会一直等待直到USB枚举成功后才会执行下一步骤。同时,在这个demo中,USB数据的收、发都需要在main的死循环中进行,主要逻辑如下所示:intmain(void){......while(USBD_CONFIGURED!=usbd_cdc.cur

[机器学习] 梯度下降 GD、随机梯度下降 SGD 和 SVRG

MLTheory太魔怔了!!!!!从微积分课上我们学到对一个\(\mathscrC^2\)函数,其二阶泰勒展开的皮亚诺余项形式\[f(\bmw')=f(\bmw)+\langle\nablaf(\bmw),\bmw'-\bmw\rangle+o(\|\bmw'-\bmw\|)\]这说明只要\(\bmw'\)和\(\bmw\)挨得足够接近,我们就可以用\(f(\bmw)+\langle\nablaf(\bmw),\bmw'-\bmw\rangle\)来逼近\(f(\bmw')\)。现在我们想定量描述这个逼近过程,来说明梯度下降(gredientdescent,GD)的收敛性及其速率。因此考虑其拉

GD32实现串口空闲(IDLE)中断 + DMA机制接收数据

前言串口功能在单片机开发中,是比较常用的外设,熟练使用串口功能也是驱动开发必备的技能之一。DMA是一种CPU辅助手段,可以在CPU不参与的情况下,是做一些辅助CPU的事情,如通常的数据搬运。在没有DMA之前,数据读取时,需要CPU的处理,在多任务处理时,增加资源紧缺(CPU调度);引入DMA之后,数据可以直接先进入DMA中处理,然后通过相应的标志,在需要的时候去DMA拿去即可,这样就极大的减轻CPU负担,提高了CPU的利用效率,有更多的时间去处理其它的事情。本文讲的即是利用串口空闲(IDLE)中断+DMA的机制来处理接收的数据。关于空闲的概念我在之前文章模拟串口收发驱动(采用IDLE信号机制)

【GD32】从0开始学GD32单片机(11)—— TIMER通用定时器详解+PWM波形输出捕获例程

目录简介计数模式捕获和比较通道输入捕获模式输出比较模式PWM模式边沿对齐PWM中央对齐PWM正交译码器从控制器例程简介在我的上一篇文章讲了基本定时器的用法和内部结构,点击下面的链接可以回顾一下。文章链接:TIMER基本定时器详解+1毫秒延时例程而这里将继续深入定时器,讲一讲通用定时器。下面是GD32各个定时器的差异表。通用定时器比较特别,它们之间还分了3个不同的版本——L0、L1和L2。大致的区别在于捕获\比较通道数、单脉冲模式支持、正交译码器支持、从设备控制器支持、内部连接支持、DMA支持。下面就以功能最全面的L0通用定时器为例,详细讲一讲。计数模式通用定时器支持向上计数、向下计数和中央对齐