感芯MC3172开发板流水灯
MC3172芯片简介
MC3172 是厦门感芯科技的一款32 位 RISC并行多线程实时处理器。基于RISC-V RV32IMC 指令集, 100%单周期指令, 最高200MHz主频, 3.37coremark/MHz。可以代替实时操作系统, 实现程序的模块化与复用性。
感芯官网下载。链接:
http://www.gxchip.c
————————————————
特性
MC3172的demo工程:(可以在官网获取到)
我的流水灯就是在官方demo改进写的
小试牛刀
之前一直在搞51、32用keil,新换了一个IDE不是很熟悉不过大同小异
官方下载的资料包 ↓
并行多线程处理器 MC3172 开发极简指南(2)
查看这个手册,了解到GPIO的使用
学习一块板子,从点亮一块开发板开始(狗头保命)
开始点灯
本人小白,弄个流水灯
代码如下(笨方法,不停的对io口取反):
void GPIO_EXAMPLE(u32 gpio_sel)
{
INTDEV_SET_CLK_RST(gpio_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
//设置外设使用的时钟频率以及特权组
GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN_ALL),GPIO_SET_ENABLE);
// 打开 GPIO 的输出使能,这里使用了 GPIO_PIN_ALL
GPIO_SET_OUTPUT_PIN_TO_0(gpio_sel,(GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3));
GPIO_SET_OUTPUT_PIN_TO_0(gpio_sel,(GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7));
//这个宏用于把指定管脚输出 0(低电平),同
while(1) {
GPIO_SET_OUTPUT_PIN_INV(gpio_sel,(GPIO_PIN0));
// GPIO_SET_OUTPUT_PIN_INV 用于输出值取反,下同
for (u32 var = 0; var < 5000; ++var) {
NOP();NOP();NOP();NOP();NOP();NOP();
} //延时,下同
GPIO_SET_OUTPUT_PIN_INV(gpio_sel,(GPIO_PIN0|GPIO_PIN1));
for (u32 var = 0; var < 5000; ++var) {
NOP();NOP();NOP();NOP();NOP();NOP();
}
GPIO_SET_OUTPUT_PIN_INV(gpio_sel,(GPIO_PIN1|GPIO_PIN2));
for (u32 var = 0; var < 5000; ++var) {
NOP();NOP();NOP();NOP();NOP();NOP();
}
GPIO_SET_OUTPUT_PIN_INV(gpio_sel,(GPIO_PIN2|GPIO_PIN3));
for (u32 var = 0; var < 5000; ++var) {
NOP();NOP();NOP();NOP();NOP();NOP();
}
GPIO_SET_OUTPUT_PIN_INV(gpio_sel,(GPIO_PIN3|GPIO_PIN4));
for (u32 var = 0; var < 5000; ++var) {
NOP();NOP();NOP();NOP();NOP();NOP();
}
GPIO_SET_OUTPUT_PIN_INV(gpio_sel,(GPIO_PIN4|GPIO_PIN5));
for (u32 var = 0; var < 5000; ++var) {
NOP();NOP();NOP();NOP();NOP();NOP();
}
GPIO_SET_OUTPUT_PIN_INV(gpio_sel,(GPIO_PIN5|GPIO_PIN6));
for (u32 var = 0; var < 5000; ++var) {
NOP();NOP();NOP();NOP();NOP();NOP();
}
GPIO_SET_OUTPUT_PIN_INV(gpio_sel,(GPIO_PIN6|GPIO_PIN7));
for (u32 var = 0; var < 5000; ++var) {
NOP();NOP();NOP();NOP();NOP();NOP();
}
GPIO_SET_OUTPUT_PIN_INV(gpio_sel,(GPIO_PIN7));
}
}
线程配置器在 MC3172_Template\MC3172
频率高看不到灯的亮灭吗,这里我选择了 1/1024主频
生产好代码就好了,启动文件我看的一知半解,就不列出来了,拿来用就得了(白嫖怪)
因为刚才设置的线程0所以放到main的线程0里
构建完成
下载软件在 MC3172_Template\Release
烧录完成
回到刚才的代码里GPIOA_BASE_ADDR我们用的是 PORTA的0-7口
成果
VID_20220902_182347
不足之处请大佬指点,我会虚心接受批评并改正,努力提高自己