自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 pwm配置

timer0_ch0的引脚为pa8,互补引脚为pb13,使能输出和互补输出,极性和互补极性置为高,空闲状态下为低,通道使能,优先使能,配置脉冲值,引脚重映射,pb13就可以被pa7替换。

2024-06-12 14:12:11 156

原创 gd32TIMER配置

LED1对应的是PB4引脚,所以要配置PB4,然后配置定时器,预分频为6w,上升沿触发,周期为2000,重复5次,然后开启中断,这里的时间计算为120000000/60000=2000hz。周期为20000,所以为1秒,但是重复5次,所以5秒中才会触发一次中断,进入中断后就可以发现LED灯被点亮啦。

2024-06-12 13:12:10 137

原创 gd32DMA串口回显

usart0的接收对应channel4所以要配置channel4和pa10,然后配置接收中断,之后先进去先接收数据,数据接收完成后进入串口空闲中断,然后在串口空闲中断中发送刚才接收到的数据,发送完成接收的数据后,进入发送中断,将sending置0,这样就可以发送接收到的数据啦。

2024-06-12 12:44:48 153

原创 gd32DMA发送

因为usart0的发送对应dma0的channel3,所以配置dma0的通道3,usart0的发送对应pa9,所以要打开pa9端口,之后配置波特率,校验位,停止位,字长,串口dma发送,配置dma中断,中断优先级,然后编写发送函数,一但进入函数那么sending置为1,先失能通道之后,内存地址改为pdata,这样就可以将pdata里的值发送出去,等到发送完成后进入中断标志,将sending置为0,这样dma就可以继续发送啦。

2024-06-11 15:47:49 121

原创 gd32DMA配置

首先配置DMA,将data0作为外设地址,外设和内存都设置8个字长,方向是外设到内存,配置循环模式,打开dma的中断,先等待dma发送完成,此时data1已经被赋值,然后进入中断,先失能dma通道,不然直接修改不起作用,然后可以将内存地址改为pdata,这样就向pdata赋值,然后初始化,使能通道就可以成功的向pdata赋值啦。1.为什么选dma0,ch0,number?

2024-06-11 15:14:16 178

原创 gd32串口接收

在串口发送的基础上继续配置串口接收,由串口发送可知,接收是对应的是PA10引脚,因此打开PA10,打开串口接收,并且配置接收中断,接收函数就是将串口接收到的内容返回,databufferwrite就是将串口的内容用数组保存起来,

2024-06-11 14:55:37 149

原创 gd32串口发送

pa9为usart0发送口。

2024-06-11 14:39:04 141

原创 gd32exti中断配置

exti中断采用下降沿,这样按一下KEY1键,pa1就会变成低电平进而触发中断。在中断函数里写入点灯,这样只要进入中断LED灯就亮了。PB4为njtrst模式所以要先将他变成普通端口。因为led所在端口为pb4所以要打开b的时钟。实验通过exti中断来点亮led灯。按键1在pa1所以要打开a的时钟。查表可得exti1对应pa1。然后配置中断和中断优先级。

2024-06-11 14:11:23 169

原创 按键消抖.

按键消抖有软件和硬件两种方法,这个是软件方法,就是按下去等都是按下去的时候为按下,一但中间有松开则这个过程需要从头开始,双击就是300ms之内再次按下,单机按下小于300ms,长按超过3s,没有超过3s就是单击。

2024-06-16 16:35:33 147

原创 函数封装和时钟树

控制和状态寄存器的设置,可选择上述时钟或。

2024-06-16 16:09:10 183

原创 dbug调试

全速运行下有断点会卡在断点没有会一直跑,f11是进入函数,f10是不会进入函数,常用是f10和f11,编译好一定要先下载。首先进入dbug前要先连接单片机,如果没有连接的话是不能进入dbug的。等连接好单片机后就可以进入dbug啦。这几个是用来调试dbug的。reset是重新开始。

2024-06-16 01:11:27 104

原创 手搓hal库

需要告知keil头文件的目录位置。用哪一个文件添加哪一个文件。

2024-06-16 00:56:34 133

原创 创建工程和调试

然后要添加启动文件,不然会报错,选择。先选择芯片gd32f303rc。,写好代码后需要先下载然后复位。

2024-06-16 00:44:14 174

原创 内存分配常识

2.全局变量静态变量被分配放到最前,没有分配的放到下面,接着下面是堆然后最后是栈。4.开启堆上的内存,使用malloc,释放free。rw_data和zi_data的总和不能大于48k。1.任何变量都是四字节对齐。

2024-06-16 00:29:45 335

原创 串口dma高速发送

首先初始化缓冲区,然后编写缓冲区,使用户能将缓冲区里面传入数据,注意下一个写的位置等于读的位置要死等,否则追尾会出错,注意dma的发送要保证内存的连续。之后配置读函数,如果没有数据直接返回,有数据则读数据,就这样将接收到的数据放到缓冲区里面,然后在将缓冲区里面的数据发送出去。

2024-06-16 00:18:54 122

原创 结合dma对高频信号测量频率和占空比

有可能下降沿先发生,所以要先判断一下,然后将得到的两个时刻相减,进而求出周期和占空比。使用dma,上升沿触发通道0,给到内存,下降沿触发通道1,给到内存中,

2024-06-15 12:15:02 105

原创 定时器输入捕获

首先配置pwm,然后配置捕获,本质是定时器捕获上升沿和下降沿,两个下降沿的差为周期,gpio的误差会比较大,所以不适用,每200分之1秒计数一次,将通道改为直接模式,捕获上升沿,改为非直接模式,捕获下降沿,这样一个引脚可以同时捕获上升沿和下降沿,开启两个通道的中断,和更新中断,使能之前先清除中断,配置中断函数,编写更新中断和通道捕获中断,在中断中得到上升沿和下降沿的时刻,如果超过10s就进入更新中断,然后计算时再加上更新的数值。

2024-06-14 23:27:21 390

原创 音乐播放器-定时器-pwm-dma

首先配置时钟,pwm,dma,然后定义数组,通过dma将数组里的值传到pwm的比较值值中,进而改变pwm的输出电压,最后发出不同的音调。

2024-06-13 23:33:12 103

原创 pwm生成正弦波

配channel4对应中断,置为更新事件使100周期满了之后触发一次中断,配置dma外设宽度和内存宽度16位,外设地址不增加,内存地址增加,方向内存到外设,循环发送,dma将cvs的值传送到比较值里面,使不用通过中断就能修改比较值。

2024-06-13 00:14:14 432

原创 pwm产生任意波

要将预分频调低,使定时器HZ变大,频率越大,pwm输出时的横轴就越细,周期越大纵轴越细,100/(120m/2400)=0.002秒,所以中断0.002秒触发一次,然后进入中断后通过改变比较值,使pwm输出不同时间的高低电平,因为时间很短,所以进而看成输出了不同的电压。

2024-06-12 17:47:55 109

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除