HR8P506是一款Cortex-m0内核的国产单片机,支持2.5-5.5V的宽电压,36KB Flash和8KB SRAM能够满足绝大多数的应用开发。
- 四个16位定时器,一个32位定时器
- 四路带死区互补PWM,16位分辨率
- 一路双边PWM,32位分辨率
- 两路UART
- 一路增强型EUART,支持7816通信协议
- 一路I2C接口,支持单主控模式和从动模式
- 两路SPI接口
- ADC:12位精度,16通道
通过J-Link的SWD调试程序非常方便。为此,我专门做了一块测试板,用于程序的调试
板上采用8MHz外部晶振,分别接了两个LED到PB0和PB1管脚上。
J1为SWD接口,用于J-Link调试和下载程序用。注意,采用J-Link V9的一定要把Pin1接到板子的VCC上,否则检测不到芯片。
板子到手后,进行了FreeRTOS的移植工作。完成后,写了个程序,让两个LED分别在两个Task中闪烁。
#include "main.h"
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "leds.h"
#include "uart.h"
void blinky_task1()
{
while(1)
{
ledsAct(LED_RED, ACT_ON);
vTaskDelay(200);
ledsAct(LED_RED, ACT_OFF);
vTaskDelay(500);
}
}
void blinky_task2()
{
while(1)
{
ledsAct(LED_GREEN, ACT_ON);
vTaskDelay(100);
ledsAct(LED_GREEN, ACT_OFF);
vTaskDelay(300);
}
}
int main(void)
{
ledsInit();
Uart0Init(9600);
xTaskCreate(blinky_task1,
(const char *)"blinky_task1",
configMINIMAL_STACK_SIZE,
NULL,
tskIDLE_PRIORITY + 1,
NULL );
xTaskCreate(blinky_task2,
(const char *)"blinky_task2",
configMINIMAL_STACK_SIZE,
NULL,
tskIDLE_PRIORITY + 1,
NULL );
vTaskStartScheduler();
while(1);
}
完整程序代码下载:https://github.com/tugen77/FreeRTOS_HR8P506
编译完成后就可以下载程序到板上。
将J-Link与板子的J1连接好(Pin1-VCC, Pin7-SWDIO, Pin8-GND, Pin9-SWCLK, Pin15-RESET)
请下载ESBurner软件,安装完毕后就可以用它来下载程序。
芯片的配置字如下:
载入编译完成后的hex文件,点选“自动”,很快就可以将程序下载到芯片。
下载成功后,Reset芯片后就可以看到两个LED等在两个Task中分别闪烁啦!~~~