最近参加了RT-Thread组织的基于RISC-V的OpenCh开发板培训,将一些教程搬运至此
CH32V307教程 [开发环境-MRS]
下载安装开发环境-MRS
建立第一个工程
编译下载
调试Debug
参考资料
下载安装开发环境-MRS
MounRiver_Studio_Setup_V151.zip
Tips:如果需要修改语言问中文,只需依次点击 Help - Languange - Sampifiled Chinese - YES 即可修改为中文。
建立第一个工程
建立工程一共有六个步骤
编译下载
编译
在左侧资源项目管理器中打开 User - main.c
此时 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);
}
}
第三步:点击 编译 检查代码是否存在语法错误。
在 控制台 中出现如下提示,表示编译成功。
Tips:如果出现语法错误,会在 控制台 中显示错误来源。双击红色报错部分,可以定位到错误源。并且在错误源的行号前面出现一个红色的X。
下载
当代码编译成功之后,在工程目录下的OBJ目录下会生成以工程名命名的.HEX文件,连接好开发板后点击 下载 即可将HEX文件下载到芯片的Flash中。
点击 下载 旁边的向下箭头可以给进入 下载配置
在下载配置菜单下,可以配置下载的芯片型号、编程地址、目标文件,还可以对芯片的读保护进行加密和解密操作。对于下载的过程可以选择全片擦除、校验、复位(复位勾选即表示在下载完成后芯片会自动复位)。
在 控制台 中出现如下提示,表示下载成功。
调试Debug
为了了解程序的运行过程,以及在运行过程中各个变量、寄存器的运行状态我们经常使用Debug来运行程序。编译完成后,插接好开发板,点击Debug按键,软件将进入Debug模式。
成功进入Debug模式之后,MRS将进入Debug界面。在该界面下,程序指针将跳转到启动代码的第一行,等待运行。
如果我们需要让程序在执行某段代码时停止,只需要在需要停止的行前面双击打上断点。
点击运行,程序将会在第一个断点处停止。
此时我们可以通过 窗口-显示视图 的相应的窗口观察相关数据,可以选择的窗口如下:
举例
即可在内存窗口中观察GPIOE相应的寄存器现在的状态。
展开OUTDR,该寄存器是控制端口输出值,点击运行,每次运行后发现ODR11,ODR12会交替变为0、1。它们分别对应了GPIOE11和E12的输出值。
在调试时如果需要单步运行,还可以按需选择单步进入、单步跳过、单步返回按键进行单步调试,对于理解代码,调试代码起到事半功倍的效果。