草庐IT

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通用定时器为例,详细讲一讲。计数模式通用定时器支持向上计数、向下计数和中央对齐

[GD32F4]基于GD32固件库移植cherryusb[STM32F4]

[GD32F4]基于GD32固件库移植cherryusb[STM32F4]基础环境使用开发板是淘宝买的不知名开发板,没什么好说的,具体的型号是GD32F450VET6。使用的cherryusb版本是0.9.0版本。使用的GD32官方固件库版本是:GD32F4xx_Firmware_Library_V3.0.4大神速通cherryusb最牛的地方在于抛弃掉所有的依赖,只需要知道芯片的usb中断函数名称usb外设的基地址使用的io口就行。本文实现了gd32f4模拟usbfshid设备作为鼠标。具体步骤首先准备参考cherryusb的如下教程先放松一点,别管usb,老老实实准备一个可以使用串口pri

php - exif 数据中没有方向 - PHP 图像上传

一直在尝试检测从iPhone上传的图像的图像方向,然后据此调整它们的方向。我正在尝试解决以potrait拍摄的图像以-90度旋转上传的问题。我尝试了很多不起作用的switch语句,因此决定在我的JSON返回中返回exif数据。我看到的问题是它们在exif数据中没有方向。我这样做:$imagefile=$fileToUpload["tmp_name"];$destinationImage=imagecreatefromstring(file_get_contents($imagefile));$exif=exif_read_data($imagefile);$moveUploadedFi

GD32F303高级定时器输出互补PWM-开发笔记

GD32F303高级定时器timer0输出3组互补PWM主要特性◼总通道数:4;◼计数器宽度:16位;◼时钟源可选:内部时钟,内部触发,外部输入,外部触发;◼多种计数模式:向上计数,向下计数和中央计数;◼正交编码器接口:被用来追踪运动和分辨旋转方向和位置;◼霍尔传感器接口:用来做三相电机控制;◼可编程的预分频器:16位,运行时可以被改变;◼每个通道可配置:输入捕获模式,输出比较模式,可编程的PWM模式,单脉冲模式;◼可编程的死区时间;◼自动重装载功能;◼可编程的计数器重复功能;◼中止输入功能;◼中断输出和DMA请求:更新事件,触发事件,比较/捕获事件,换相事件和中止事件;◼多个定时器的菊链使得