Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
LCM/Project/MDK5/Objects/
LCM/Project/MDK5/LCM_Light_Control_IO_WS2812_New.uvguix.*
LCM/Project/MDK5/Listings/
LCM/Build/
8 changes: 2 additions & 6 deletions LCM/Code/App/task.c
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,6 @@ static void WS2812_Power_Display(uint8_t brightness)
**************************************************/
static void WS2812_VESC(void)
{
uint8_t i;
uint8_t pos, red;
uint8_t green = 0;
uint8_t blue = WS2812_Measure;
Expand Down Expand Up @@ -222,7 +221,7 @@ static void WS2812_VESC(void)
void WS2812_Boot(void)
{
uint8_t i;
uint8_t num = floor(Power_Time / 500) + 1;
uint8_t num = (Power_Time / 500) + 1;
uint8_t bootAnims[10][3] = {
// Default (blue...green)
//{{10,0,30}, {9,3,27}, {8,6,24}, {7,9,21}, {6,12,18}, {5,15,15}, {4,18,12}, {3,21,9}, {2,24,6}, {1,27,3}},
Expand Down Expand Up @@ -255,7 +254,7 @@ void WS2812_Boot(void)
void WS2812_Shutdown(void)
{
uint8_t brightness = 100;
int num = 10 - floor(Power_Time / 100);
int num = 10 - (Power_Time / 100);
if (num < 1) {
num = 1;
}
Expand Down Expand Up @@ -412,8 +411,6 @@ static void WS2812_Handtest(void)
**************************************************/
void WS2812_Task(void)
{
uint8_t i;

if(Charge_Flag == 3) // Battery fully charged
{
WS2812_Set_AllColours(1,10,50,150,50); // white with a strong green tint
Expand Down Expand Up @@ -729,7 +726,6 @@ static void Set_Headlights_Brightness(int brightness)
void Headlights_Task(void)
{
static uint8_t gear_position_last = 0;
static bool isForward = false;

if (Flashlight_Time < 10) {
return;
Expand Down
1 change: 1 addition & 0 deletions LCM/Code/App/test.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ void Test_LED(void)
case 1:
led_pwm += 1;
pwm_st = 2;
/* FALLTHRU */
case 2:
led_pwm -= 500;
if(led_pwm == 0)
Expand Down
1 change: 1 addition & 0 deletions LCM/Code/App/vesc_uasrt.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "vesc_uasrt.h"
#include "flag_bit.h"
#include "eeprom.h"
#include <string.h>

uint8_t VESC_RX_Buff[32];
uint8_t VESC_RX_Flag = 0;
Expand Down
1 change: 0 additions & 1 deletion LCM/Code/App/vesc_uasrt.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#ifndef __VESC_USART_H
#define __VESC_USART_H

#include <string.h>
#include "hk32f030m.h"
#include "crc.h"
#include "usart.h"
Expand Down
4 changes: 3 additions & 1 deletion LCM/Code/App/ws2812.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,9 @@ void WS2812_Set_Colour(uint8_t num,uint8_t red,uint8_t green,uint8_t blue)

void delay(uint16_t i)
{
while(i--);
while(i--) {
__ASM volatile("nop");
}
}

void WS2812_Refresh(void)
Expand Down
35 changes: 13 additions & 22 deletions LCM/Code/Drive/io_ws2812.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,34 +39,25 @@ void IO_WS2812_Init(void)
}
i=250 120us
*/

void WS2812_0_Code(void)
{
GPIOD->BSRR = GPIO_Pin_4;
GPIOD->BSRR = GPIO_Pin_4;
GPIOD->BSRR = GPIO_Pin_4; //250ns

//250ns
for(int i = 0; i != 3; ++i) {
GPIOD->BSRR = GPIO_Pin_4;
__ASM volatile("" ::: "memory");
}

GPIOD->BRR = GPIO_Pin_4;
// GPIOD->BRR = GPIO_Pin_4;
// GPIOD->BRR = GPIO_Pin_4;
// GPIOD->BRR = GPIO_Pin_4;
// GPIOD->BRR = GPIO_Pin_4;
// GPIOD->BRR = GPIO_Pin_4;
// GPIOD->BRR = GPIO_Pin_4;
// GPIOD->BRR = GPIO_Pin_4; //750ns
}

void WS2812_1_Code(void)
{
GPIOD->BSRR = GPIO_Pin_4;
GPIOD->BSRR = GPIO_Pin_4;
GPIOD->BSRR = GPIO_Pin_4;
GPIOD->BSRR = GPIO_Pin_4;
GPIOD->BSRR = GPIO_Pin_4;
GPIOD->BSRR = GPIO_Pin_4;
GPIOD->BSRR = GPIO_Pin_4;
GPIOD->BSRR = GPIO_Pin_4; //750ns

//750ns
for(int i = 0; i != 8; ++i) {
GPIOD->BSRR = GPIO_Pin_4;
__ASM volatile("" ::: "memory");
}

GPIOD->BRR = GPIO_Pin_4;
// GPIOD->BRR = GPIO_Pin_4;
// GPIOD->BRR = GPIO_Pin_4; //250ns
}
7 changes: 4 additions & 3 deletions LCM/Code/User/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,10 @@

//RCC_ClocksTypeDef RCC_Clock;

/*

*/
#ifdef __GNUC__
// stub init (main is called explicitly during startup)
void _init(void) {}
#endif

/**************************************************
* @brie :main()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,245 @@
/**
******************************************************************************
* @file startup_hk32f030mf4p6.s
* @brief HK32F030MF4P6 devices vector table for GCC toolchain.
* This module performs:
* - Set the initial SP
* - Set the initial PC == Reset_Handler,
* - Set the vector table entries with the exceptions ISR address
* - Branches to main in the C library (which eventually calls main()).
* After Reset the Cortex-M0 processor is in Thread mode,
* priority is Privileged, and the Stack is set to Main.
******************************************************************************
*/

.syntax unified
.cpu cortex-m0
.fpu softvfp
.thumb

.global g_pfnVectors
.global Default_Handler

/* start address for the initialization values of the .data section.
defined in linker script */
.word _sidata
/* start address for the .data section. defined in linker script */
.word _sdata
/* end address for the .data section. defined in linker script */
.word _edata
/* start address for the .bss section. defined in linker script */
.word _sbss
/* end address for the .bss section. defined in linker script */
.word _ebss

.section .text.Reset_Handler
.weak Reset_Handler
.type Reset_Handler, %function
Reset_Handler:
ldr r0, =_estack
mov sp, r0 /* set stack pointer */

/* Copy the data segment initializers from flash to SRAM */
ldr r0, =_sdata
ldr r1, =_edata
ldr r2, =_sidata
movs r3, #0
b LoopCopyDataInit

CopyDataInit:
ldr r4, [r2, r3]
str r4, [r0, r3]
adds r3, r3, #4

LoopCopyDataInit:
adds r4, r0, r3
cmp r4, r1
bcc CopyDataInit

/* Zero fill the bss segment. */
ldr r2, =_sbss
ldr r4, =_ebss
movs r3, #0
b LoopFillZerobss

FillZerobss:
str r3, [r2]
adds r2, r2, #4

LoopFillZerobss:
cmp r2, r4
bcc FillZerobss

/* Call the clock system intitialization function.*/
bl SystemInit
/* Call static constructors. Remove this line if compile with `-nostartfiles` reports error */
bl __libc_init_array
/* Call the application's entry point.*/
bl main

LoopForever:
b LoopForever


.size Reset_Handler, .-Reset_Handler

/**
* @brief This is the code that gets called when the processor receives an
* unexpected interrupt. This simply enters an infinite loop, preserving
* the system state for examination by a debugger.
*
* @param None
* @retval : None
*/
.section .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b Infinite_Loop
.size Default_Handler, .-Default_Handler
/******************************************************************************
*
* The minimal vector table for a Cortex M0. Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
******************************************************************************/
.section .isr_vector,"a",%progbits
.type g_pfnVectors, %object
.size g_pfnVectors, .-g_pfnVectors


g_pfnVectors:
.word _estack
.word Reset_Handler
.word NMI_Handler
.word HardFault_Handler
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word SVC_Handler
.word 0
.word 0
.word PendSV_Handler
.word SysTick_Handler
.word WWDG_IRQHandler /* Window WatchDog */
.word 0 /* Reserved */
.word EXTI11_IRQHandler /* EXTI Line 11 interrupt(AWU_WKP) */
.word FLASH_IRQHandler /* FLASH */
.word RCC_IRQHandler /* RCC */
.word EXTI0_IRQHandler /* EXTI Line 0 */
.word EXTI1_IRQHandler /* EXTI Line 1 */
.word EXTI2_IRQHandler /* EXTI Line 2 */
.word EXTI3_IRQHandler /* EXTI Line 3 */
.word EXTI4_IRQHandler /* EXTI Line 4 */
.word EXTI5_IRQHandler /* EXTI Line 5 */
.word TIM1_BRK_IRQHandler /* TIM1 break interrupt */
.word ADC1_IRQHandler /* ADC1 interrupt, combined with EXTI line 8 */
.word TIM1_UP_TRG_COM_IRQHandler /* TIM1 Update, Trigger and Commutation */
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */
.word TIM2_IRQHandler /* TIM2 */
.word 0 /* Reserved */
.word TIM6_IRQHandler /* TIM6 */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word EXTI6_IRQHandler /* EXTI Line 6 */
.word EXTI7_IRQHandler /* EXTI Line 7 */
.word I2C1_IRQHandler /* I2C1 global interrupt, combined with EXTI Line 10 */
.word 0 /* Reserved */
.word SPI1_IRQHandler /* SPI1 */
.word 0 /* Reserved */
.word USART1_IRQHandler /* USART1 global interrupt, combined with EXTI Line 9 */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */
.word 0 /* Reserved */

/*******************************************************************************
*
* Provide weak aliases for each Exception handler to the Default_Handler.
* As they are weak aliases, any function with the same name will override
* this definition.
*
*******************************************************************************/

.weak NMI_Handler
.thumb_set NMI_Handler,Default_Handler

.weak HardFault_Handler
.thumb_set HardFault_Handler,Default_Handler

.weak SVC_Handler
.thumb_set SVC_Handler,Default_Handler

.weak PendSV_Handler
.thumb_set PendSV_Handler,Default_Handler

.weak SysTick_Handler
.thumb_set SysTick_Handler,Default_Handler

.weak WWDG_IRQHandler
.thumb_set WWDG_IRQHandler,Default_Handler

.weak EXTI11_IRQHandler
.thumb_set EXTI11_IRQHandler,Default_Handler

.weak FLASH_IRQHandler
.thumb_set FLASH_IRQHandler,Default_Handler

.weak RCC_IRQHandler
.thumb_set RCC_IRQHandler,Default_Handler

.weak EXTI0_IRQHandler
.thumb_set EXTI0_IRQHandler,Default_Handler

.weak EXTI1_IRQHandler
.thumb_set EXTI1_IRQHandler,Default_Handler

.weak EXTI2_IRQHandler
.thumb_set EXTI2_IRQHandler,Default_Handler

.weak EXTI3_IRQHandler
.thumb_set EXTI3_IRQHandler,Default_Handler

.weak EXTI4_IRQHandler
.thumb_set EXTI4_IRQHandler,Default_Handler

.weak EXTI5_IRQHandler
.thumb_set EXTI5_IRQHandler,Default_Handler

.weak TIM1_BRK_IRQHandler
.thumb_set TIM1_BRK_IRQHandler,Default_Handler

.weak ADC1_IRQHandler
.thumb_set ADC1_IRQHandler,Default_Handler

.weak TIM1_UP_TRG_COM_IRQHandler
.thumb_set TIM1_UP_TRG_COM_IRQHandler,Default_Handler

.weak TIM1_CC_IRQHandler
.thumb_set TIM1_CC_IRQHandler,Default_Handler

.weak TIM2_IRQHandler
.thumb_set TIM2_IRQHandler,Default_Handler

.weak TIM6_IRQHandler
.thumb_set TIM6_IRQHandler,Default_Handler

.weak EXTI6_IRQHandler
.thumb_set EXTI6_IRQHandler,Default_Handler

.weak EXTI7_IRQHandler
.thumb_set EXTI7_IRQHandler,Default_Handler

.weak I2C1_IRQHandler
.thumb_set I2C1_IRQHandler,Default_Handler

.weak SPI1_IRQHandler
.thumb_set SPI1_IRQHandler,Default_Handler

.weak USART1_IRQHandler
.thumb_set USART1_IRQHandler,Default_Handler
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ extern "C" {

/* Includes ------------------------------------------------------------------*/
#include "hk32f030m.h"
#include <stdio.h>
#define UNUSED(X) (void)X /* To avoid gcc/g++ warnings */


Expand Down
Loading