受疫情影响,我收到板子已经接近评测尾声。先到官网下载资料,然后根据资料进行间的的硬件平台的搭建。
首先说核心板确实做工不错,io都引了出来,方便灵活应用
然后说一下希望改进的地方:1、应该有一个电源指示灯,一个运行指示灯。黑乎乎的板子,信号也是一抹黑
2、插针有IO口,有GND。但是没有可以引出的+3.3V。有几个3.3V的跳针,但是要接跳线器,引出不易。
3、原理图和板子有不匹配的地方(可能我没有找到正确的原理图)
下面说一下使用。可以直接再demo上修改。也可以用线程编辑工具生成项目。线程编辑工具简单易用,但是稍微有些简陋,希望能够配置的地方更多一些。
生成三个线程,驱动三个全彩的LED。LED由三极管驱动,,控制基极,同时拉低LED的R\G\B三个引脚可以亮红绿蓝三色
线程1,LED1闪烁
线程2,LED2闪烁
线程3,LED3闪烁
线程4,轮流使能红绿蓝颜色
void thread0_main(void)
{
//while(1){
// //user code section
// //GPIO_EXAMPLE(GPIOA_BASE_ADDR);
//}
//thread_end();
//使能了GPIOA的时钟
INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
//将PA0设置为输出模式
GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN0),GPIO_SET_ENABLE);
//配置默认输出为高电平
GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR,GPIO_PIN0);
while(1)
{
//引脚反转
GPIO_SET_OUTPUT_PIN_INV(GPIOA_BASE_ADDR,GPIO_PIN0);
for (u32 i = 0; i < 200; i++)
{
for (u32 j = 0; j < 2000; j++)
{
NOP();
}
}
}
thread_end();
}
////////////////////////////////////////////////////////////
void thread1_main(void)
{
// while(1){
// //user code section
// //GPCOM_UART_EXAMPLE(GPCOM8_BASE_ADDR);
// }
// thread_end();
INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
//将PA1设置为输出模式
GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN1),GPIO_SET_ENABLE);
//配置默认输出为高电平
GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR,GPIO_PIN1);
while(1)
{
//引脚反转
GPIO_SET_OUTPUT_PIN_INV(GPIOA_BASE_ADDR,GPIO_PIN1);
for (u32 i = 0; i < 400; i++)
{
for (u32 j = 0; j < 4000; j++)
{
NOP();
}
}
}
thread_end();
}
////////////////////////////////////////////////////////////
void thread2_main(void)
{
// while(1){
// //GPCOM_SPI_EXAMPLE(GPCOM9_BASE_ADDR);
// //user code section
// }
INTDEV_SET_CLK_RST(GPIOA_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
//将PA3设置为输出模式
GPIO_SET_OUTPUT_EN_VALUE(GPIOA_BASE_ADDR,(GPIO_PIN3),GPIO_SET_ENABLE);
//配置默认输出为高电平
GPIO_SET_OUTPUT_PIN_TO_1(GPIOA_BASE_ADDR,GPIO_PIN3);
while(1)
{
//引脚反转
GPIO_SET_OUTPUT_PIN_INV(GPIOA_BASE_ADDR,GPIO_PIN3);
for (u32 i = 0; i < 600; i++)
{
for (u32 j = 0; j < 6000; j++)
{
NOP();
}
}
}
thread_end();
}
////////////////////////////////////////////////////////////
void thread3_main(void)
{
// while(1){
// //TIMER_COMPARER_EXAMPLE(TIMER2_BASE_ADDR);
// //user code section
// }
//使能了GPIOC的时钟
INTDEV_SET_CLK_RST(GPIOC_BASE_ADDR,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
//将PC0/2/4设置为输出模式
GPIO_SET_OUTPUT_EN_VALUE(GPIOC_BASE_ADDR,(GPIO_PIN0),GPIO_SET_ENABLE);
GPIO_SET_OUTPUT_EN_VALUE(GPIOC_BASE_ADDR,(GPIO_PIN2),GPIO_SET_ENABLE);
GPIO_SET_OUTPUT_EN_VALUE(GPIOC_BASE_ADDR,(GPIO_PIN4),GPIO_SET_ENABLE);
while(1)
{
GPIO_SET_OUTPUT_PIN_TO_0(GPIOC_BASE_ADDR,GPIO_PIN0);
GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN2);
GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN4);
for (u32 i = 0; i < 200; i++)
{
for (u32 j = 0; j < 2000; j++)
{
NOP();
}
}
GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN0);
GPIO_SET_OUTPUT_PIN_TO_0(GPIOC_BASE_ADDR,GPIO_PIN2);
GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN4);
for (u32 i = 0; i < 200; i++)
{
for (u32 j = 0; j < 2000; j++)
{
NOP();
}
}
GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN0);
GPIO_SET_OUTPUT_PIN_TO_1(GPIOC_BASE_ADDR,GPIO_PIN2);
GPIO_SET_OUTPUT_PIN_TO_0(GPIOC_BASE_ADDR,GPIO_PIN4);
for (u32 i = 0; i < 200; i++)
{
for (u32 j = 0; j < 2000; j++)
{
NOP();
}
}
}
thread_end();
}
在编辑编译里bulid all生成hex文件
启动开发板程序下载软件
单词运行,程序运行,hex并不烧写进MCU,掉电后此程序清除
烧录固件后,程序烧进MCU。掉电重新上电程序运行