09 2023 档案
摘要:MCU使用FPU时,MRS需要进行配置,具体配置方式如下图: 开启硬件浮点MRS具体配置-Properties -> C/C++ Build -> Setting -> Target Processor-> Floating point 选项配置成 Single precision extensio
阅读全文
摘要:当MRS编译完成后,编译界面显示信息如下,其中数据代表含义如下: text段是程序代码段,由编译器在编译链接时自动计算,表示程序代码段大小。 data段包含已初始化的全局变量和静态变量。 bss段是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一
阅读全文
摘要:1、关于调试模式下ecall和ebreak指令无效的解释说明 调试模式下ebreak会是断点,直接停在此处,单步可跳过。ecall会触发中断进入HardFault_Handler 2、关于MRS编译同时输出hex文件和bin文件 按照下图添加即可: ${cross_prefix}${cross_ob
阅读全文
摘要:在我们使用f_write函数向SD卡或FLASH写入数据时,会出现SD卡或Flash返回正常但数据并没有写入的现象,如下图: 文件打开只是一个空文件。 原因如下: f_write后没关闭,缓存的写入流在进行f_open时被清掉了,所以读到一个空文件。 遇到以上问题时,需要进行如下操作: f_writ
阅读全文
摘要:1、关于低功耗模式下的功耗排列 由低到高依次为:待机模式 < 停止模式 < 睡眠模式 < 运行模式 2、关于低功耗测试注意事项 需要将所有的IO口设置成下拉输入 需要开启PWR时钟,目的是为了将内部调压器设置成低功耗模式 测试时需要将板子指示灯、LDO等去掉
阅读全文
摘要:当单片机没有随机数发生器时,单片机一般用以下方法可以产生随机数:1、直接使用C库函数rand()来生成随机数该种用法下,一般配合定时器使用,通过获取定时器计数值,使用rand()函数来产生一个随机数。 2、利用ADC噪声产生随机数由于噪声和生产误差等因素,ADC原始数据总会有波动,我们可以利用这些波
阅读全文
摘要:正常MCU运行时,都是从FLASH 0起始地址开始运行,有时因为某些需要,需要配置从非0地址开始运行。以CH32V203为例(适用于其他CH32V系列),主要修改配置如下: 主要集中在ld文件的修改: 1、修改FLASH的分配,将FLASH分配成2块区域,如下图 /* CH32V20x_D6 - C
阅读全文
摘要:关于CSR寄存器中的mstatus寄存器,我们在使用的时候主要需要关注位3MIE位,位7MPIE位,位12:11MPP,位14:13FS,各个位解释如下: 位MIE:用于控制打开或者关闭全局中断 当该MIE域的值为1时,表示机器模式下所有的中断全局打开。 当该MIE域的值为0时,表示机器模式下所有的
阅读全文
摘要:对于MCU本身来说,当开启硬件流控时,RTS、CTS初始化配置时: RTS建议配置为复用推挽输出,CTS建议配置配置为浮空输入或带上拉输入,如下图 如上图, 对于MCU来说: RTS为输出信号,用于表示MCU串口是否准备好接收数据,若输出信号为低电平,则说明MCU串口可以接收数据,请求发送数据。当接
阅读全文
摘要:CH32X035 运放OPA和比较器CMP的应用 一、关于CH32X035介绍 CH32X035内置USB和PD PHY,20KB RAM,62KB FLASH,支持USB Host主机和USB Device设备功能、USB PD及Type-C快充功能,内置可编程协议I/O控制器,提供了OPA运放、
阅读全文