sdk:examples: adapte to new perips
Signed-off-by: liangkangnan <liangkangnan@163.com>pull/4/head
parent
fdd953c0f0
commit
477d9efc34
|
@ -50,9 +50,9 @@ extern "C" {
|
||||||
#define UART_RXDATA_RXDATA_FIELD \
|
#define UART_RXDATA_RXDATA_FIELD \
|
||||||
((bitfield_field32_t) { .mask = UART_RXDATA_RXDATA_MASK, .index = UART_RXDATA_RXDATA_OFFSET })
|
((bitfield_field32_t) { .mask = UART_RXDATA_RXDATA_MASK, .index = UART_RXDATA_RXDATA_OFFSET })
|
||||||
|
|
||||||
typedef void (*putc)(uint8_t);
|
typedef void (*myputc)(uint8_t);
|
||||||
|
|
||||||
void uart0_init(putc put);
|
void uart0_init(myputc putc);
|
||||||
uint8_t uart0_getc();
|
uint8_t uart0_getc();
|
||||||
void uart0_putc(uint8_t c);
|
void uart0_putc(uint8_t c);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ uint8_t uart0_getc()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 115200bps, 8 N 1
|
// 115200bps, 8 N 1
|
||||||
void uart0_init(putc put)
|
void uart0_init(myputc put)
|
||||||
{
|
{
|
||||||
// enable tx and rx
|
// enable tx and rx
|
||||||
UART0_REG(UART_CTRL_REG_OFFSET) |= 0x3;
|
UART0_REG(UART_CTRL_REG_OFFSET) |= 0x3;
|
||||||
|
|
|
@ -54,5 +54,5 @@ secs_ret time_in_secs(CORE_TICKS ticks)
|
||||||
|
|
||||||
void portable_init(core_portable *p, int *argc, char *argv[])
|
void portable_init(core_portable *p, int *argc, char *argv[])
|
||||||
{
|
{
|
||||||
uart_init();
|
uart0_init(uart0_putc);
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,7 @@ int main( void )
|
||||||
|
|
||||||
static void prvSetupHardware( void )
|
static void prvSetupHardware( void )
|
||||||
{
|
{
|
||||||
GPIO_REG(GPIO_CTRL) |= 0x1; // set gpio0 output mode
|
gpio_set_mode(GPIO0, GPIO_MODE_OUTPUT); // set gpio0 output mode
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -180,7 +180,7 @@ const uint32_t ulNullLoopDelay = 0x1ffffUL;
|
||||||
{
|
{
|
||||||
__asm volatile( "nop" );
|
__asm volatile( "nop" );
|
||||||
}
|
}
|
||||||
GPIO_REG(GPIO_DATA) ^= 0x1;
|
gpio_set_output_toggle(GPIO0); // toggle led
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
@ -192,7 +192,7 @@ void vToggleLED( void )
|
||||||
set_test_pass();
|
set_test_pass();
|
||||||
while (1);
|
while (1);
|
||||||
#else
|
#else
|
||||||
GPIO_REG(GPIO_DATA) ^= 0x1;
|
gpio_set_output_toggle(GPIO0); // toggle led
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
/* Standard includes. */
|
/* Standard includes. */
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
#include "include/machine_timer.h"
|
#include "include/timer.h"
|
||||||
#include "include/rvic.h"
|
#include "include/rvic.h"
|
||||||
|
|
||||||
/* Let the user override the pre-loading of the initial LR with the address of
|
/* Let the user override the pre-loading of the initial LR with the address of
|
||||||
|
@ -134,19 +134,23 @@ volatile uint32_t ulHartId;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SIMULATION
|
#ifdef SIMULATION
|
||||||
machine_timer_set_cmp_val(5000);
|
timer0_set_div(50);
|
||||||
|
timer0_set_value(100); // 100us period
|
||||||
#else
|
#else
|
||||||
machine_timer_set_cmp_val(uxTimerIncrementsForOneTick);
|
timer0_set_div(configCPU_CLOCK_HZ/1000000);
|
||||||
|
timer0_set_value(1000000/configTICK_RATE_HZ); // 10ms period
|
||||||
#endif
|
#endif
|
||||||
machine_timer_irq_enable(1);// enable timer interrupt
|
timer0_set_int_enable(1);
|
||||||
|
timer0_set_mode_auto_reload();
|
||||||
|
rvic_set_irq_prio_level(0, 1);
|
||||||
rvic_irq_enable(0);
|
rvic_irq_enable(0);
|
||||||
machine_timer_enable(1); // start timer
|
timer0_start(1); // start timer
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
void xPortClearTimerIntPending()
|
void xPortClearTimerIntPending()
|
||||||
{
|
{
|
||||||
machine_timer_clear_irq_pending(); // clear int pending
|
timer0_clear_int_pending();
|
||||||
rvic_clear_irq_pending(0);
|
rvic_clear_irq_pending(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,19 +2,29 @@
|
||||||
|
|
||||||
#include "../../bsp/include/gpio.h"
|
#include "../../bsp/include/gpio.h"
|
||||||
#include "../../bsp/include/utils.h"
|
#include "../../bsp/include/utils.h"
|
||||||
|
#include "../../bsp/include/rvic.h"
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
gpio_output_enable(GPIO0); // gpio0输出模式
|
gpio_set_mode(GPIO0, GPIO_MODE_OUTPUT); // gpio0输出模式
|
||||||
gpio_input_enable(GPIO1); // gpio1输入模式
|
gpio_set_mode(GPIO1, GPIO_MODE_INPUT); // gpio1输入模式
|
||||||
|
gpio_set_interrupt_mode(GPIO1, GPIO_INTR_DOUBLE_EDGE);
|
||||||
|
rvic_irq_enable(3);
|
||||||
|
rvic_set_irq_prio_level(3, 1);
|
||||||
|
global_irq_enable();
|
||||||
|
|
||||||
|
while (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void gpio1_irq_handler()
|
||||||
|
{
|
||||||
|
gpio_clear_intr_pending(GPIO1);
|
||||||
|
rvic_clear_irq_pending(3);
|
||||||
|
|
||||||
while (1) {
|
|
||||||
// 如果GPIO1输入高
|
// 如果GPIO1输入高
|
||||||
if (gpio_get_data(GPIO1))
|
if (gpio_get_input_data(GPIO1))
|
||||||
gpio_set_data(GPIO0, 1); // GPIO0输出高
|
gpio_set_output_data(GPIO0, 1); // GPIO0输出高
|
||||||
// 如果GPIO1输入低
|
// 如果GPIO1输入低
|
||||||
else
|
else
|
||||||
gpio_set_data(GPIO0, 0); // GPIO0输出低
|
gpio_set_output_data(GPIO0, 0); // GPIO0输出低
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,13 +43,13 @@ int main()
|
||||||
rvic_irq_enable(0);
|
rvic_irq_enable(0);
|
||||||
timer0_start(1);
|
timer0_start(1);
|
||||||
|
|
||||||
gpio_output_enable(GPIO0);
|
gpio_set_mode(GPIO0, GPIO_MODE_OUTPUT);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
// 500ms
|
// 500ms
|
||||||
if (count == 50) {
|
if (count == 50) {
|
||||||
count = 0;
|
count = 0;
|
||||||
gpio_data_toggle(GPIO0); // toggle led
|
gpio_set_output_toggle(GPIO0); // toggle led
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue