![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
GD32L233
文章平均质量分 51
freemote
这个作者很懒,什么都没留下…
展开
-
【GD32L233C-START】15、RT-Thread事件集从中断唤醒任务
1、基本思路在上节的基础上,新增一个任务,任务中获取事件集标志,如果没有获取到则任务挂起,获取到后清除事件标志,在外部中断服务函数中,当按键按下的时候发送事件标志。2、代码实现(1)初始化按键io口为外部中断void KeyInit(void){ rcu_periph_clock_enable(RCU_GPIOA); gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0); /* enable the S原创 2022-03-09 14:46:26 · 609 阅读 · 0 评论 -
【GD32L233C-START】14、RT-Thread多线程、消息队列使用
1、基本思路三个线程,一个消息队列(大小是1,长度是12)线程1:LED 500ms闪烁一次;线程2:adc采样;线程3:oled显示;在线程2中,采样到数据后,通过消息队列发送到线程3,线程3收到消息后,更新oled显示。2、RT-Thread配置默认是没有使能消息队列的,需要使能消息队列;或3、代码实现(1)Led初始化及led线程static rt_thread_t led_thread = RT_NULL;void LedInit(void){ /* enable原创 2022-03-04 17:12:15 · 975 阅读 · 0 评论 -
【GD32L233C-START】13、RT-Thread移植到GD32L233
1、安装RT-Thread keil Pack或者离线下载安装:https://www.rt-thread.org/download/mdk/RealThread.RT-Thread.3.1.5.pack2、在工程中勾选RTOS中的kernel 和 shell3、编译报错4、配置时钟#error “TODO 1: OS Tick Configuration.”// #error "TODO 1: OS Tick Configuration." SysTick_Confi原创 2022-03-01 19:30:40 · 1442 阅读 · 7 评论 -
【GD32L233C-START】12、IAP程序升级——基于YMODEM协议
关于IAP程序升级的要点和YMODEM协议,可以查看【开源】串口YMODEM实现IAP程序升级(附工程源码);本文在GD32L233CCT6上实现串口YMODEM升级。本文只演示实际升级过程:1、上电复位,选择操作2、升级程序3、读取mcu中的app部分flash注:这里从mcu读取了app所有空间的flash。工程代码:代码...原创 2022-02-26 15:17:59 · 1214 阅读 · 0 评论 -
【GD32L233C-START】11、GD32 ISP软件还不支持GD32L233
1、什么是ISPISP是In-System Program的缩写,即在系统编程。用户可以直接下载代码,而不用把mcu从pcb板上取下来。ISP需要mcu本身支持,ISP方式也比较适用于生产烧录。2、引导配置从上图可以看出,上电后要执行引导装载程序,要求Boot0高电平,Boot1低电平。3、接口GD32L233支持USART0、USART1、USBD三种接口。4、ISP软件GD32官方的GigaDevice MCU ISP Programmer.exe。5、串口ISP下载将BOOT原创 2022-02-24 20:04:25 · 1441 阅读 · 7 评论 -
【GD32L233C-START】10、硬件SPI1驱动RC522
1、关于GD32L233CCT6的SPI接口可以看出 有两路spi,spi0和spi1,本节使用spi1。2、开发板上SPI的引脚3、spi1引脚复用4、开发板与RC522模块连接开发板 rc522PB12 <----------------------------->SDA(NSS)PB13 <----------------------------->SCKPB14 <----------原创 2022-02-22 19:12:59 · 1197 阅读 · 0 评论 -
【GD32L233C-START】9、按键——外部中断
1、硬件连接可以看出,PA0通过R29下拉到GND,按键按下时, PA0的电压为3.3V,没有按下时,PA0的电压为0V,因此可以通过判断上升沿,判断按键是否按下。2、中断优先级可以看出只有2位,4个优先等级,而且不分先占、次占优先级,这与cortex m3还是区别比较大的。3、中断线可以看出PA0 / PB0 / PC0 / PD0 / PF0对应一个中断线,即就是这几个如果要用到外部中断,同一时刻只能有一个。4、中断函数查看startup_gd32l23x.s文件,发现外部IO中断只有原创 2022-02-20 16:52:47 · 1289 阅读 · 0 评论 -
【GD32L233C-START】8、使用内部参考电压校准adc,adc采样更准确
1、为什么要校准因为MCU的VDD的电压会有微小的波动,并不是3.3v恒定的。2、ADC与ADC通道可以看出GD32L233C-START开发板,也就是芯片GD32L233CCT6有一个ADC外设,10个外部通道,4个内部通道;10个外部通道,分别是ADC_IN0-ADC_IN9,对应GPIO为PA0-PA7,PB0-PB1;4个内部通道,分别是ADC_IN16-ADC_IN19,对应内部温度传感器电压输出、内部参考电压输出、VBAT 引脚上电压除以3、VSLCD引脚上电压除以3。3、内部参考原创 2022-02-19 16:39:54 · 4916 阅读 · 5 评论 -
【GD32L233C-START】7、获取MCU96位唯一ID、SRAM、FLASH大小
1、关于电子签名设备的电子签名中包含的存储容量信息和96位的唯一设备ID。它被存储在片上闪存的信息模块 中。96位唯一设备ID对于每颗芯片而言都是唯一的。它可以用作序列号,或安全密钥的一部分, 等等。2、96位唯一ID96位ID信息,地址依次为0x1FFFF7E8、0x1FFFF7EC、0x1FFFF7F0,设备出厂的时候,已经固化在mcu内部的,用户不可更改。3、关于SRAM和FLASH大小存储容量信息,地址为0x1FFFF7E0,设备出厂的时候,已经固化在mcu内部的,用户不可更改。原创 2022-02-17 22:44:20 · 3423 阅读 · 1 评论 -
【GD32L233C-START】6、硬件I2C驱动0.96吋OLED
1、关于GD32L233CCT6的I2C接口可以看出有两路I2C,分别是I2C0,I2C1。2、开发板上I2C的引脚可以看出,I2C1的引脚为PB10和PB11。3、通用引脚复用为I2C可以看出,是复用功能4。4、代码实现(1)初始化i2cvoid I2cInit(void){ rcu_periph_clock_enable(RCU_I2C1); rcu_periph_clock_enable(RCU_GPIOB); gpio_af_set(GPIOB, GPIO_AF_原创 2022-02-15 21:37:41 · 1786 阅读 · 6 评论 -
【GD32L233C-START】5、flash读写——使用内部flash存储数据
1、关于GD32 FlashGD32 flash官方称为FMC。2、关于GD32L233CCT6 flash本次使用的GD32L233CCT6 flash大小为256k;可以看出,分为64页,从0-63页,每页大小为4kb;手册上说,支持32位整字和16位半字编程,但是库函数只有整字编程。3、代码实现#define FLASH_PAGE_SIZE 0x1000 //4kvoid FlashWrite(uint16_t len,uint8_t *data,uint原创 2022-02-14 09:13:46 · 2386 阅读 · 6 评论 -
【GD32L233C-START】4、串口不定长数据接收
1、硬件连接本文使用串口0,对应的引脚为PA9和PA10。2、GPIO复用功能可以看出,复用功能为AF7。3、实现思路利用串口接收相邻两个字符的时间来判断一串数据是否接收完成,如果超过设定的时间,还没有接收到下一个字符,则认为一串数据接收完成。如果使用115200波特率,数据长度为8bit,停止位为1bit,那么接收一个字节大约需要,(1/115200)9=0.78ms。那么就可以利用,接收完一个字符后,如果0.78ms之内没有下一个数据,那么就可以认为一串数据接收完成,考虑到单片机接收.原创 2022-02-11 13:21:58 · 1524 阅读 · 0 评论 -
【GD32L233C-START】3、pwm实现呼吸灯
1、硬件连接2、PWM通道可以看出,PC6对应的是TIME2的CH0通道。3、实现方法通过调节占空比,递增占空比,led逐渐变亮,视觉上是呼吸灯的效果。4、核心代码(1)pwm初始化void PwmInit(void){ rcu_periph_clock_enable(RCU_GPIOC); /* TIMER1 GPIO */ gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_6 );原创 2022-02-10 21:51:02 · 569 阅读 · 0 评论 -
【GD32L233C-START】2、非阻塞方式点灯,blink,blink,blink……
1、前言:官方的demo用的阻塞方式点灯,即就是死等,在等待期间mcu干不了其他事情(中断除外),这种方式不太友好,本文使用非阻塞方式点灯。2、硬件连接3、思路利用定时器中断,每1ms中断一次,整个系统维护一个tick计数;记录某一时刻的tick,用A表示,再获取当前的tick,用B表示,如果当前的B-A大于等于500(这里500ms闪烁一次),那么就执行一次led翻转,同时也更新A的值。4、软件实现(1)利用定时器中断,每1ms中断一次,整个系统维护一个tick计数static uint原创 2022-02-09 16:05:01 · 699 阅读 · 0 评论 -
【GD32L233C-START】1、初识GD32L233C-START板卡
1、GD32L233x系列mcuArm® Cortex®-M23内核,最高主频为64MHz;集成了64KB到256KB的嵌入式eFlash和16KB到32KB的SRAM;深度睡眠(Deep-sleep)电流降至2uA,唤醒时间低于10uS;待机(Standby)电流最低仅有0.4uA;深度睡眠模式下能够被多种系统时钟、外设接口触发,支持Low power Timer、Low powerUART、RTC、LCD以及标准I2C、USART等在内的多个唤醒源;芯片供电电压为1.7-3.6V,并支持原创 2022-02-08 22:23:51 · 4047 阅读 · 4 评论