【RISC-V MCU CH32V103测评】+自制MP3播放器
本帖最后由 guangods 于 2020-11-19 11:19 编辑今天早上收到顺丰快递,打开一看,心仪已久的沁恒开发板到了。冬天绵绵细雨下,开启沁恒RISC单片机之旅。开箱,雨天,光线不太好,大家凑合着看看吧。
带了杜绑线,可以直接连接主板与调试器了。
主板,用的就是RISC的单片机,就是这次想了解的型号,另外,也可以作为了解国产单片机的尝试。
WCH-Link调试器,名称第一次见,类似于j-link吧。
头贴,先介绍这么多吧,关于评测,结合自己手头的模块,正好有个mp3模块+功放,这样可以做个简单的mp3控制播放器,但可能不限于mp3功能吧,主要看进度吧,还有结稿日期吧。
本帖最后由 guangods 于 2020-11-19 11:21 编辑
开发步骤:1、先熟悉下开发环境,装好MounRiver Studio,连接好硬件环境(上面开箱给的一张小卡片上,有连接线图),如图: 2、将开发包里的点灯程序复制到开发目录下的user文件夹下,编译,下载,就可以了。成功了,整个过程,没有任何卡顿。另外,点灯程序用的是PA0,所以需要一条杜绑线连接到LED1口。点灯效果如下图:总结:挺顺利的,资料很全面,只要顺着资料弄,就可以了。另外,打开串口助手,可以实现串口打印输出,不用再接任何串口线,用wch-link就可以实现串口通讯了。
和题主差不多进度,实验楼下收到板子。早上对着图接了link和串口线。刚刚烧录完demo程序,在串口终端可以输出Hello world了。用的开发环境1.3版本里自带的Terminal串口终端,挺实用方便的 guangods 发表于 2020-11-19 11:15
开发步骤:1、先熟悉下开发环境,装好MounRiver Studio,连接好硬件环境(上面开箱给的一张小卡片上,有连 ...
实验2实现触摸按键控制灯
上次实现了灯和串口打印,基本的框架其实就建立好了,在此框架基础上,加上触摸按键的程序就可以了,在main.c文件中改一下就行了。
#include "debug.h"
/* Global define */
#define TKEY_CR ADC1->CTLR1
#define TKEY_CH ADC1->RSQR3
#define TKEY_SR ADC1->RDATAR
/* Global Variable */
/*******************************************************************************
* Function Name: GPIO_Toggle_INIT
* Description : Initializes GPIOA.0
* Input : None
* Return : None
*******************************************************************************/
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void Touch_Key_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC时钟分频为6分频
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //配置ADC为独立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //设置在单通道模式下执行转换
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//设置在单次模式下执行转换
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //设置转换不是由外部触发启动
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //设置ADC数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1; //顺序进行规则转换的ADC通道的数目
ADC_Init(ADC1, &ADC_InitStructure); //根据ADC_InitStructure中指定的参数初始化ADC1寄存器
ADC_Cmd(ADC1, ENABLE);
TKEY_CH =0x00000002; // TouchKey Channel
TKEY_CR |= 0x51000000; // Enable TouchKey
}
u16 Touch_Key_Adc(u8 ch)
{
u16 val;
while(!(TKEY_CR & 0x08000000));
val = (u16)TKEY_SR;
return val;
}
void sys_init(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
GPIO_Toggle_INIT();
Touch_Key_Init();
}
/*******************************************************************************
* Function Name: main
* Description : Main program.
* Input : None
* Return : None
*******************************************************************************/
int main(void)
{
u8 i=0;
u16 ADC_val;
sys_init();
printf("SystemClk:%d\r\n",SystemCoreClock);
printf("key ctl led0\r\n");
while(1)
{
ADC_val = Touch_Key_Adc(ADC_Channel_2);
// printf( "TouchKey:%04d\r\n",ADC_val );
Delay_Ms(180);
if(ADC_val & 0x8000)
{
printf("This value is discarded\r\n");
}
else if (ADC_val<2000)
{
Delay_Ms(20);
if(ADC_val<2000)
{
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (i==0) ? (i=Bit_SET):(i=Bit_RESET));
}
}
}
}
基本的效果如图:
guangods 发表于 2020-11-21 15:35
实验2实现触摸按键控制灯
上次实现了灯和串口打印,基本的框架其实就建立好了,在此框架基础上,加上触摸 ...
实验4,基本搭完祼奔程序的框架
周日,抽出一下午的时间来弄,基本上搭完了框架,和之前写的stm32的程序很相似。并且,弄了个gitee上远程库,这样,晚上在家也可以弄了。
暂时先不上代码了,现在看起来,还是有些乱。
这个功能设计的非常棒呢。 可以实现什么格式的文件解析? I2S的接口有吗? 这个是否需要其他模块的配置?
页:
[1]