目录
下载安装开发环境-MRS
建立第一个工程
编译下载
调试Debug
参考资料
下载安装开发环境-MRS
- 进入官网下载页面(http://mounriver.com/download)) 下载
MounRiver_Studio_Setup_V151.zip
![](https://verimake.com/assets/files/2022-01-04/1641279937-761305-1-1-mrs.png)
- 将文件解压缩后,双击 MounRiver_Studio_Setup_V151.exe 安装即可。
![](https://verimake.com/assets/files/2022-01-04/1641279937-819441-1-2-mrs.png)
Tips:如果需要修改语言问中文,只需依次点击 Help - Languange - Sampifiled Chinese - YES 即可修改为中文。
![](https://verimake.com/assets/files/2022-01-04/1641279938-98072-1-3.png)
建立第一个工程
建立工程一共有六个步骤
- 点击 创建MounRiver Studio
![](https://verimake.com/assets/files/2022-01-04/1641279938-385685-1-4-1.png)
- 选择工程所用芯片 CH32V307
- 选择 CH32V307VCT6
- 编辑工程名
- 选择工程存放路径
- 点击 完成
![](https://verimake.com/assets/files/2022-01-04/1641279938-472991-1-5-2.png)
编译下载
编译
在左侧资源项目管理器中打开 User - main.c
![](https://verimake.com/assets/files/2022-01-04/1641279938-581819-1-6-main.png)
此时 main.c中为MRS使用AD的样例模板生成的工程文件。
我们现在用一个控制LED闪烁的程序将其替代。
第一步:将AD相关代码删除,添加GPIO口初始化函数,配置PE11和PE12为输出端口。
/*******************************************************************************
* Function Name : GPIO_INIT
* Description : Initializes GPIOA.0
* Input : None
* Return : None
*******************************************************************************/
void GPIO_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure);
}
第二步:在 main() 函数中添加IO口控制代码。
/*******************************************************************************
* Function Name : main
* Description : Main program.
* Input : None
* Return : None
*******************************************************************************/
int main(void)
{
u16 i=0;
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n",SystemCoreClock);
GPIO_INIT();
while(1)
{
Delay_Ms(250);
GPIO_WriteBit(GPIOE, GPIO_Pin_11, (i==0) ? (i=1) : (i=0));
GPIO_WriteBit(GPIOE, GPIO_Pin_12, (i==1) ? 0 : 1);
}
}
第三步:点击 编译 检查代码是否存在语法错误。
![](https://verimake.com/assets/files/2022-01-04/1641279938-736750-1-7.png)
在 控制台 中出现如下提示,表示编译成功。
![](https://verimake.com/assets/files/2022-01-04/1641279938-766162-1-8.png)
Tips:如果出现语法错误,会在 控制台 中显示错误来源。双击红色报错部分,可以定位到错误源。并且在错误源的行号前面出现一个红色的X。
![](https://verimake.com/assets/files/2022-01-04/1641279938-877655-1-9.png)
下载
当代码编译成功之后,在工程目录下的OBJ目录下会生成以工程名命名的.HEX文件,连接好开发板后点击 下载 即可将HEX文件下载到芯片的Flash中。
![](https://verimake.com/assets/files/2022-01-04/1641279938-903434-1-10.png)
点击 下载 旁边的向下箭头可以给进入 下载配置
![](https://verimake.com/assets/files/2022-01-04/1641279938-915210-1-11.png)
在下载配置菜单下,可以配置下载的芯片型号、编程地址、目标文件,还可以对芯片的读保护进行加密和解密操作。对于下载的过程可以选择全片擦除、校验、复位(复位勾选即表示在下载完成后芯片会自动复位)。
![](https://verimake.com/assets/files/2022-01-04/1641279938-954752-1-12.png)
在 控制台 中出现如下提示,表示下载成功。
![](https://verimake.com/assets/files/2022-01-04/1641279938-976191-1-13.png)
调试Debug
为了了解程序的运行过程,以及在运行过程中各个变量、寄存器的运行状态我们经常使用Debug来运行程序。编译完成后,插接好开发板,点击Debug按键,软件将进入Debug模式。
![](https://verimake.com/assets/files/2022-01-04/1641279939-325-1-14-debug.png)
成功进入Debug模式之后,MRS将进入Debug界面。在该界面下,程序指针将跳转到启动代码的第一行,等待运行。
![](https://verimake.com/assets/files/2022-01-04/1641279939-114674-1-15-debug.png)
如果我们需要让程序在执行某段代码时停止,只需要在需要停止的行前面双击打上断点。
![](https://verimake.com/assets/files/2022-01-04/1641279939-230458-1-16.png)
点击运行,程序将会在第一个断点处停止。
![](https://verimake.com/assets/files/2022-01-04/1641279939-251858-1-17.png)
此时我们可以通过 窗口-显示视图 的相应的窗口观察相关数据,可以选择的窗口如下:
![](https://verimake.com/assets/files/2022-01-04/1641279939-321963-1-18-debug.png)
举例
- 假如我们需要观察 GPIOE 相关寄存器的状态。选择外设(Perpherals) ,在里面找到GPIOE,勾选上。
![](https://verimake.com/assets/files/2022-01-04/1641279939-348401-1-19-gpio-e.png)
即可在内存窗口中观察GPIOE相应的寄存器现在的状态。
![](https://verimake.com/assets/files/2022-01-04/1641279939-388032-1-20-gpio-e.png)
展开OUTDR,该寄存器是控制端口输出值,点击运行,每次运行后发现ODR11,ODR12会交替变为0、1。它们分别对应了GPIOE11和E12的输出值。
![](https://verimake.com/assets/files/2022-01-04/1641280568-79712-1-21-outdr.png)
- 假如我们对于这行代码中 (i==0) ? (i=1) : (i=0) 这个表达式的值不理解时,我们可以通过选择 窗口-显示视图-表达式打开表达式窗口,并将代码中 (i==0) ? (i=1) : (i=0) 添加到窗口,观察该表达式的值。
![](https://verimake.com/assets/files/2022-01-04/1641280568-2187-1-22.png)
在调试时如果需要单步运行,还可以按需选择单步进入、单步跳过、单步返回按键进行单步调试,对于理解代码,调试代码起到事半功倍的效果。
![](https://verimake.com/assets/files/2022-01-04/1641280568-23608-1-23.png)