1
0

Add maple mini code.

This commit is contained in:
flabbergast 2015-12-03 08:49:55 +00:00
parent 39c0c27587
commit f108623011
6 changed files with 133 additions and 69 deletions

View File

@ -1,6 +1,5 @@
# Target file name (without extension). # Target file name (without extension).
PROJECT = ch PROJECT = ch
TARGET = alps64
# Directory common source files exist # Directory common source files exist
TMK_DIR = ../../tmk_core TMK_DIR = ../../tmk_core
@ -26,14 +25,14 @@ CONFIG_H = config.h
# BOARD = GENERIC_STM32_F103 # BOARD = GENERIC_STM32_F103
# GENERIC STM32F103C8T6 board - no bootloader (programmer over serial or SWD) # GENERIC STM32F103C8T6 board - no bootloader (programmer over serial or SWD)
OPT_DEFS = # OPT_DEFS =
MCU_LDSCRIPT = STM32F103x8 # MCU_LDSCRIPT = STM32F103x8
BOARD = GENERIC_STM32_F103 # BOARD = GENERIC_STM32_F103
# MAPLE MINI # MAPLE MINI
# OPT_DEFS = -DCORTEX_VTOR_INIT=0x5000 OPT_DEFS = -DCORTEX_VTOR_INIT=0x5000
# MCU_LDSCRIPT = STM32F103xE_maplemini_bootloader.ld MCU_LDSCRIPT = STM32F103xE_maplemini_bootloader
# BOARD = MAPLEMINI_STM32_F103 BOARD = MAPLEMINI_STM32_F103
## chip/board settings ## chip/board settings
# the next two should match the directories in # the next two should match the directories in
@ -71,7 +70,7 @@ ARMV = 7
## BOOTMAGIC is not supported on STM32 chips yet. ## BOOTMAGIC is not supported on STM32 chips yet.
MOUSEKEY_ENABLE = yes # Mouse keys MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug # CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration COMMAND_ENABLE = yes # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover NKRO_ENABLE = yes # USB Nkey Rollover

View File

@ -46,7 +46,7 @@
* @details Frequency of the system timer that drives the system ticks. This * @details Frequency of the system timer that drives the system ticks. This
* setting also defines the system tick time unit. * setting also defines the system tick time unit.
*/ */
#define CH_CFG_ST_FREQUENCY 10000 #define CH_CFG_ST_FREQUENCY 2000
/** /**
* @brief Time delta constant for the tick-less mode. * @brief Time delta constant for the tick-less mode.
@ -124,7 +124,7 @@
* @note This is not related to the compiler optimization options. * @note This is not related to the compiler optimization options.
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#define CH_CFG_OPTIMIZE_SPEED FALSE #define CH_CFG_OPTIMIZE_SPEED TRUE
/** @} */ /** @} */
@ -281,7 +281,7 @@
* *
* @note The default is @p TRUE. * @note The default is @p TRUE.
*/ */
#define CH_CFG_USE_MEMCORE FALSE #define CH_CFG_USE_MEMCORE TRUE
/** /**
* @brief Heap Allocator APIs. * @brief Heap Allocator APIs.
@ -293,7 +293,7 @@
* @p CH_CFG_USE_SEMAPHORES. * @p CH_CFG_USE_SEMAPHORES.
* @note Mutexes are recommended. * @note Mutexes are recommended.
*/ */
#define CH_CFG_USE_HEAP FALSE #define CH_CFG_USE_HEAP TRUE
/** /**
* @brief Memory Pools Allocator APIs. * @brief Memory Pools Allocator APIs.

View File

@ -22,11 +22,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
void led_set(uint8_t usb_led) void led_set(uint8_t usb_led)
{ {
if (usb_led & (1<<USB_LED_CAPS_LOCK)) { if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
// output high /* generic STM32F103C8T6 board */
#ifdef BOARD_GENERIC_STM32_F103
palSetPadMode(GPIOC, 13, PAL_MODE_OUTPUT_PUSHPULL); palSetPadMode(GPIOC, 13, PAL_MODE_OUTPUT_PUSHPULL);
palClearPad(GPIOC, 13); palClearPad(GPIOC, 13);
#endif
/* Maple Mini */
#ifdef BOARD_MAPLEMINI_STM32_F103
palSetPadMode(GPIOB, 1, PAL_MODE_OUTPUT_PUSHPULL);
palSetPad(GPIOB, 1);
#endif
} else { } else {
// Hi-Z // Hi-Z
/* generic STM32F103C8T6 board */
#ifdef BOARD_GENERIC_STM32_F103
palSetPadMode(GPIOC, 13, PAL_MODE_INPUT); palSetPadMode(GPIOC, 13, PAL_MODE_INPUT);
#endif
/* Maple Mini */
#ifdef BOARD_MAPLEMINI_STM32_F103
palSetPadMode(GPIOB, 1, PAL_MODE_INPUT);
#endif
} }
} }

View File

@ -54,9 +54,19 @@ uint8_t matrix_cols(void)
return MATRIX_COLS; return MATRIX_COLS;
} }
/* generic STM32F103C8T6 board */
#ifdef BOARD_GENERIC_STM32_F103
#define LED_ON() do { palClearPad(GPIOC, GPIOC_LED) ;} while (0) #define LED_ON() do { palClearPad(GPIOC, GPIOC_LED) ;} while (0)
#define LED_OFF() do { palSetPad(GPIOC, GPIOC_LED); } while (0) #define LED_OFF() do { palSetPad(GPIOC, GPIOC_LED); } while (0)
#define LED_TGL() do { palTogglePad(GPIOC, GPIOC_LED); } while (0) #define LED_TGL() do { palTogglePad(GPIOC, GPIOC_LED); } while (0)
#endif
/* Maple Mini */
#ifdef BOARD_MAPLEMINI_STM32_F103
#define LED_ON() do { palClearPad(GPIOB, 1) ;} while (0)
#define LED_OFF() do { palSetPad(GPIOB, 1); } while (0)
#define LED_TGL() do { palTogglePad(GPIOB, 1); } while (0)
#endif
void matrix_init(void) void matrix_init(void)
{ {
@ -132,8 +142,12 @@ void matrix_print(void)
*/ */
static void init_cols(void) static void init_cols(void)
{ {
#ifdef BOARD_MAPLEMINI_STM32_F103
// don't need pullup/down, since it's pulled down in hardware // don't need pullup/down, since it's pulled down in hardware
palSetPadMode(GPIOB, 8, PAL_MODE_INPUT);
#else
palSetPadMode(GPIOB, 8, PAL_MODE_INPUT_PULLDOWN); palSetPadMode(GPIOB, 8, PAL_MODE_INPUT_PULLDOWN);
#endif
} }
/* Returns status of switches(1:on, 0:off) */ /* Returns status of switches(1:on, 0:off) */

View File

@ -17,68 +17,72 @@
#ifndef _MCUCONF_H_ #ifndef _MCUCONF_H_
#define _MCUCONF_H_ #define _MCUCONF_H_
#define STM32F103_MCUCONF
/* /*
* STM32F0xx drivers configuration. * STM32F103 drivers configuration.
* The following settings override the default settings present in * The following settings override the default settings present in
* the various device driver implementation headers. * the various device driver implementation headers.
* Note that the settings for each driver only have effect if the whole * Note that the settings for each driver only have effect if the whole
* driver is enabled in halconf.h. * driver is enabled in halconf.h.
* *
* IRQ priorities: * IRQ priorities:
* 3...0 Lowest...Highest. * 15...0 Lowest...Highest.
* *
* DMA priorities: * DMA priorities:
* 0...3 Lowest...Highest. * 0...3 Lowest...Highest.
*/ */
#define STM32F103_MCUCONF
/* /*
* HAL driver system settings. * HAL driver system settings.
*/ */
#define STM32_NO_INIT FALSE #define STM32_NO_INIT FALSE
#define STM32_PVD_ENABLE FALSE
#define STM32_PLS STM32_PLS_LEV0
#define STM32_HSI_ENABLED TRUE #define STM32_HSI_ENABLED TRUE
#define STM32_HSI14_ENABLED TRUE #define STM32_LSI_ENABLED FALSE
#define STM32_HSI48_ENABLED FALSE #define STM32_HSE_ENABLED TRUE
#define STM32_LSI_ENABLED TRUE
#define STM32_HSE_ENABLED FALSE
#define STM32_LSE_ENABLED FALSE #define STM32_LSE_ENABLED FALSE
#define STM32_SW STM32_SW_PLL #define STM32_SW STM32_SW_PLL
#define STM32_PLLSRC STM32_PLLSRC_HSI #define STM32_PLLSRC STM32_PLLSRC_HSE
#define STM32_PREDIV_VALUE 2 #define STM32_PLLXTPRE STM32_PLLXTPRE_DIV1
#define STM32_PLLMUL_VALUE 12 #define STM32_PLLMUL_VALUE 9
#define STM32_USBPRE STM32_USBPRE_DIV1
#define STM32_HPRE STM32_HPRE_DIV1 #define STM32_HPRE STM32_HPRE_DIV1
#define STM32_PPRE STM32_PPRE_DIV1 #define STM32_PPRE1 STM32_PPRE1_DIV2
#define STM32_ADCSW STM32_ADCSW_HSI14 #define STM32_PPRE2 STM32_PPRE2_DIV2
#define STM32_ADCPRE STM32_ADCPRE_DIV4 #define STM32_ADCPRE STM32_ADCPRE_DIV4
#define STM32_USB_CLOCK_REQUIRED TRUE
#define STM32_USBPRE STM32_USBPRE_DIV1P5
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK #define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
#define STM32_ADCPRE STM32_ADCPRE_DIV4 #define STM32_RTCSEL STM32_RTCSEL_HSEDIV
#define STM32_ADCSW STM32_ADCSW_HSI14 #define STM32_PVD_ENABLE FALSE
#define STM32_USBSW STM32_USBSW_HSI48 #define STM32_PLS STM32_PLS_LEV0
#define STM32_CECSW STM32_CECSW_HSI
#define STM32_I2C1SW STM32_I2C1SW_HSI
#define STM32_USART1SW STM32_USART1SW_PCLK
#define STM32_RTCSEL STM32_RTCSEL_LSI
/* /*
* ADC driver system settings. * ADC driver system settings.
*/ */
#define STM32_ADC_USE_ADC1 FALSE #define STM32_ADC_USE_ADC1 FALSE
#define STM32_ADC_ADC1_DMA_PRIORITY 2 #define STM32_ADC_ADC1_DMA_PRIORITY 2
#define STM32_ADC_IRQ_PRIORITY 2 #define STM32_ADC_ADC1_IRQ_PRIORITY 6
#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2
/*
* CAN driver system settings.
*/
#define STM32_CAN_USE_CAN1 FALSE
#define STM32_CAN_CAN1_IRQ_PRIORITY 11
/* /*
* EXT driver system settings. * EXT driver system settings.
*/ */
#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3 #define STM32_EXT_EXTI0_IRQ_PRIORITY 6
#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3 #define STM32_EXT_EXTI1_IRQ_PRIORITY 6
#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3 #define STM32_EXT_EXTI2_IRQ_PRIORITY 6
#define STM32_EXT_EXTI16_IRQ_PRIORITY 3 #define STM32_EXT_EXTI3_IRQ_PRIORITY 6
#define STM32_EXT_EXTI17_IRQ_PRIORITY 3 #define STM32_EXT_EXTI4_IRQ_PRIORITY 6
#define STM32_EXT_EXTI5_9_IRQ_PRIORITY 6
#define STM32_EXT_EXTI10_15_IRQ_PRIORITY 6
#define STM32_EXT_EXTI16_IRQ_PRIORITY 6
#define STM32_EXT_EXTI17_IRQ_PRIORITY 6
#define STM32_EXT_EXTI18_IRQ_PRIORITY 6
#define STM32_EXT_EXTI19_IRQ_PRIORITY 6
/* /*
* GPT driver system settings. * GPT driver system settings.
@ -86,11 +90,15 @@
#define STM32_GPT_USE_TIM1 FALSE #define STM32_GPT_USE_TIM1 FALSE
#define STM32_GPT_USE_TIM2 FALSE #define STM32_GPT_USE_TIM2 FALSE
#define STM32_GPT_USE_TIM3 FALSE #define STM32_GPT_USE_TIM3 FALSE
#define STM32_GPT_USE_TIM14 FALSE #define STM32_GPT_USE_TIM4 FALSE
#define STM32_GPT_TIM1_IRQ_PRIORITY 2 #define STM32_GPT_USE_TIM5 FALSE
#define STM32_GPT_TIM2_IRQ_PRIORITY 2 #define STM32_GPT_USE_TIM8 FALSE
#define STM32_GPT_TIM3_IRQ_PRIORITY 2 #define STM32_GPT_TIM1_IRQ_PRIORITY 7
#define STM32_GPT_TIM14_IRQ_PRIORITY 2 #define STM32_GPT_TIM2_IRQ_PRIORITY 7
#define STM32_GPT_TIM3_IRQ_PRIORITY 7
#define STM32_GPT_TIM4_IRQ_PRIORITY 7
#define STM32_GPT_TIM5_IRQ_PRIORITY 7
#define STM32_GPT_TIM8_IRQ_PRIORITY 7
/* /*
* I2C driver system settings. * I2C driver system settings.
@ -98,11 +106,10 @@
#define STM32_I2C_USE_I2C1 FALSE #define STM32_I2C_USE_I2C1 FALSE
#define STM32_I2C_USE_I2C2 FALSE #define STM32_I2C_USE_I2C2 FALSE
#define STM32_I2C_BUSY_TIMEOUT 50 #define STM32_I2C_BUSY_TIMEOUT 50
#define STM32_I2C_I2C1_IRQ_PRIORITY 3 #define STM32_I2C_I2C1_IRQ_PRIORITY 5
#define STM32_I2C_I2C2_IRQ_PRIORITY 3 #define STM32_I2C_I2C2_IRQ_PRIORITY 5
#define STM32_I2C_USE_DMA TRUE #define STM32_I2C_I2C1_DMA_PRIORITY 3
#define STM32_I2C_I2C1_DMA_PRIORITY 1 #define STM32_I2C_I2C2_DMA_PRIORITY 3
#define STM32_I2C_I2C2_DMA_PRIORITY 1
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") #define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
/* /*
@ -111,9 +118,15 @@
#define STM32_ICU_USE_TIM1 FALSE #define STM32_ICU_USE_TIM1 FALSE
#define STM32_ICU_USE_TIM2 FALSE #define STM32_ICU_USE_TIM2 FALSE
#define STM32_ICU_USE_TIM3 FALSE #define STM32_ICU_USE_TIM3 FALSE
#define STM32_ICU_TIM1_IRQ_PRIORITY 3 #define STM32_ICU_USE_TIM4 FALSE
#define STM32_ICU_TIM2_IRQ_PRIORITY 3 #define STM32_ICU_USE_TIM5 FALSE
#define STM32_ICU_TIM3_IRQ_PRIORITY 3 #define STM32_ICU_USE_TIM8 FALSE
#define STM32_ICU_TIM1_IRQ_PRIORITY 7
#define STM32_ICU_TIM2_IRQ_PRIORITY 7
#define STM32_ICU_TIM3_IRQ_PRIORITY 7
#define STM32_ICU_TIM4_IRQ_PRIORITY 7
#define STM32_ICU_TIM5_IRQ_PRIORITY 7
#define STM32_ICU_TIM8_IRQ_PRIORITY 7
/* /*
* PWM driver system settings. * PWM driver system settings.
@ -122,33 +135,53 @@
#define STM32_PWM_USE_TIM1 FALSE #define STM32_PWM_USE_TIM1 FALSE
#define STM32_PWM_USE_TIM2 FALSE #define STM32_PWM_USE_TIM2 FALSE
#define STM32_PWM_USE_TIM3 FALSE #define STM32_PWM_USE_TIM3 FALSE
#define STM32_PWM_TIM1_IRQ_PRIORITY 3 #define STM32_PWM_USE_TIM4 FALSE
#define STM32_PWM_TIM2_IRQ_PRIORITY 3 #define STM32_PWM_USE_TIM5 FALSE
#define STM32_PWM_TIM3_IRQ_PRIORITY 3 #define STM32_PWM_USE_TIM8 FALSE
#define STM32_PWM_TIM1_IRQ_PRIORITY 7
#define STM32_PWM_TIM2_IRQ_PRIORITY 7
#define STM32_PWM_TIM3_IRQ_PRIORITY 7
#define STM32_PWM_TIM4_IRQ_PRIORITY 7
#define STM32_PWM_TIM5_IRQ_PRIORITY 7
#define STM32_PWM_TIM8_IRQ_PRIORITY 7
/*
* RTC driver system settings.
*/
#define STM32_RTC_IRQ_PRIORITY 15
/* /*
* SERIAL driver system settings. * SERIAL driver system settings.
*/ */
#define STM32_SERIAL_USE_USART1 FALSE #define STM32_SERIAL_USE_USART1 FALSE
#define STM32_SERIAL_USE_USART2 FALSE #define STM32_SERIAL_USE_USART2 FALSE
#define STM32_SERIAL_USART1_PRIORITY 3 #define STM32_SERIAL_USE_USART3 FALSE
#define STM32_SERIAL_USART2_PRIORITY 3 #define STM32_SERIAL_USE_UART4 FALSE
#define STM32_SERIAL_USE_UART5 FALSE
#define STM32_SERIAL_USART1_PRIORITY 12
#define STM32_SERIAL_USART2_PRIORITY 12
#define STM32_SERIAL_USART3_PRIORITY 12
#define STM32_SERIAL_UART4_PRIORITY 12
#define STM32_SERIAL_UART5_PRIORITY 12
/* /*
* SPI driver system settings. * SPI driver system settings.
*/ */
#define STM32_SPI_USE_SPI1 FALSE #define STM32_SPI_USE_SPI1 FALSE
#define STM32_SPI_USE_SPI2 FALSE #define STM32_SPI_USE_SPI2 FALSE
#define STM32_SPI_USE_SPI3 FALSE
#define STM32_SPI_SPI1_DMA_PRIORITY 1 #define STM32_SPI_SPI1_DMA_PRIORITY 1
#define STM32_SPI_SPI2_DMA_PRIORITY 1 #define STM32_SPI_SPI2_DMA_PRIORITY 1
#define STM32_SPI_SPI1_IRQ_PRIORITY 2 #define STM32_SPI_SPI3_DMA_PRIORITY 1
#define STM32_SPI_SPI2_IRQ_PRIORITY 2 #define STM32_SPI_SPI1_IRQ_PRIORITY 10
#define STM32_SPI_SPI2_IRQ_PRIORITY 10
#define STM32_SPI_SPI3_IRQ_PRIORITY 10
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") #define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
/* /*
* ST driver system settings. * ST driver system settings.
*/ */
#define STM32_ST_IRQ_PRIORITY 2 #define STM32_ST_IRQ_PRIORITY 8
#define STM32_ST_USE_TIMER 2 #define STM32_ST_USE_TIMER 2
/* /*
@ -156,10 +189,13 @@
*/ */
#define STM32_UART_USE_USART1 FALSE #define STM32_UART_USE_USART1 FALSE
#define STM32_UART_USE_USART2 FALSE #define STM32_UART_USE_USART2 FALSE
#define STM32_UART_USART1_IRQ_PRIORITY 3 #define STM32_UART_USE_USART3 FALSE
#define STM32_UART_USART2_IRQ_PRIORITY 3 #define STM32_UART_USART1_IRQ_PRIORITY 12
#define STM32_UART_USART2_IRQ_PRIORITY 12
#define STM32_UART_USART3_IRQ_PRIORITY 12
#define STM32_UART_USART1_DMA_PRIORITY 0 #define STM32_UART_USART1_DMA_PRIORITY 0
#define STM32_UART_USART2_DMA_PRIORITY 0 #define STM32_UART_USART2_DMA_PRIORITY 0
#define STM32_UART_USART3_DMA_PRIORITY 0
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") #define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
/* /*
@ -167,6 +203,7 @@
*/ */
#define STM32_USB_USE_USB1 TRUE #define STM32_USB_USE_USB1 TRUE
#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE #define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
#define STM32_USB_USB1_LP_IRQ_PRIORITY 3 #define STM32_USB_USB1_HP_IRQ_PRIORITY 13
#define STM32_USB_USB1_LP_IRQ_PRIORITY 14
#endif /* _MCUCONF_H_ */ #endif /* _MCUCONF_H_ */

View File

@ -1036,11 +1036,11 @@ void send_remote_wakeup(USBDriver *usbp) {
chThdSleepMilliseconds(15); chThdSleepMilliseconds(15);
USB0->CTL &= ~USBx_CTL_RESUME; USB0->CTL &= ~USBx_CTL_RESUME;
#endif /* KINETIS_USB_USE_USB0 */ #endif /* KINETIS_USB_USE_USB0 */
#elif defined(STM32F0XX) /* K20x || KL2x */ #elif defined(STM32F0XX) || defined(STM32F1XX) /* K20x || KL2x */
STM32_USB->CNTR |= CNTR_RESUME; STM32_USB->CNTR |= CNTR_RESUME;
chThdSleepMilliseconds(15); chThdSleepMilliseconds(15);
STM32_USB->CNTR &= ~CNTR_RESUME; STM32_USB->CNTR &= ~CNTR_RESUME;
#else /* STM32F0XX */ #else /* STM32F0XX || STM32F1XX */
#warning Sending remote wakeup packet not implemented for your platform. #warning Sending remote wakeup packet not implemented for your platform.
#endif /* K20x || KL2x */ #endif /* K20x || KL2x */
} }