- 博客(20)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 pwm配置
timer0_ch0的引脚为pa8,互补引脚为pb13,使能输出和互补输出,极性和互补极性置为高,空闲状态下为低,通道使能,优先使能,配置脉冲值,引脚重映射,pb13就可以被pa7替换。
2024-06-12 14:12:11
156
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 gd32TIMER配置
LED1对应的是PB4引脚,所以要配置PB4,然后配置定时器,预分频为6w,上升沿触发,周期为2000,重复5次,然后开启中断,这里的时间计算为120000000/60000=2000hz。周期为20000,所以为1秒,但是重复5次,所以5秒中才会触发一次中断,进入中断后就可以发现LED灯被点亮啦。
2024-06-12 13:12:10
137
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 gd32DMA串口回显
usart0的接收对应channel4所以要配置channel4和pa10,然后配置接收中断,之后先进去先接收数据,数据接收完成后进入串口空闲中断,然后在串口空闲中断中发送刚才接收到的数据,发送完成接收的数据后,进入发送中断,将sending置0,这样就可以发送接收到的数据啦。
2024-06-12 12:44:48
153
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 gd32DMA配置
首先配置DMA,将data0作为外设地址,外设和内存都设置8个字长,方向是外设到内存,配置循环模式,打开dma的中断,先等待dma发送完成,此时data1已经被赋值,然后进入中断,先失能dma通道,不然直接修改不起作用,然后可以将内存地址改为pdata,这样就向pdata赋值,然后初始化,使能通道就可以成功的向pdata赋值啦。1.为什么选dma0,ch0,number?
2024-06-11 15:14:16
178
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 gd32串口接收
在串口发送的基础上继续配置串口接收,由串口发送可知,接收是对应的是PA10引脚,因此打开PA10,打开串口接收,并且配置接收中断,接收函数就是将串口接收到的内容返回,databufferwrite就是将串口的内容用数组保存起来,
2024-06-11 14:55:37
149
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 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
原创 dbug调试
全速运行下有断点会卡在断点没有会一直跑,f11是进入函数,f10是不会进入函数,常用是f10和f11,编译好一定要先下载。首先进入dbug前要先连接单片机,如果没有连接的话是不能进入dbug的。等连接好单片机后就可以进入dbug啦。这几个是用来调试dbug的。reset是重新开始。
2024-06-16 01:11:27
104
原创 内存分配常识
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关注的人