Skip to content

Instantly share code, notes, and snippets.

@jrsa
Created May 25, 2017 21:39
Show Gist options
  • Save jrsa/685fe59dbf4ad2bf146401976e072dcb to your computer and use it in GitHub Desktop.
Save jrsa/685fe59dbf4ad2bf146401976e072dcb to your computer and use it in GitHub Desktop.
#include "stm32f10x.h"
const uint16_t kPinClk = GPIO_Pin_11;
const uint16_t kPinEnable = GPIO_Pin_10;
const uint16_t kPinData = GPIO_Pin_1;
const uint16_t kCharacterEnablePins[] = {
GPIO_Pin_5,
GPIO_Pin_6,
GPIO_Pin_7,
GPIO_Pin_8
};
void Init() {
RCC_APB2PeriphClockCmd(
RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
RCC_APB2Periph_TIM1 | RCC_APB2Periph_SPI1 | RCC_APB2Periph_USART1 |
RCC_APB2Periph_ADC1, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); // for dac
GPIO_InitTypeDef gpio_init;
gpio_init.GPIO_Pin = kPinClk;
gpio_init.GPIO_Pin |= kPinEnable;
gpio_init.GPIO_Pin |= kPinData;
gpio_init.GPIO_Pin |= kCharacterEnablePins[0];
gpio_init.GPIO_Pin |= kCharacterEnablePins[1];
gpio_init.GPIO_Pin |= kCharacterEnablePins[2];
gpio_init.GPIO_Pin |= kCharacterEnablePins[3];
gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
gpio_init.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &gpio_init);
GPIOB->BSRR = kPinEnable;
GPIOB->BSRR = kCharacterEnablePins[0];
GPIOB->BSRR = kCharacterEnablePins[1];
GPIOB->BSRR = kCharacterEnablePins[2];
GPIOB->BSRR = kCharacterEnablePins[3];
}
void Shift14SegmentsWord(uint16_t data) {
GPIOB->BRR = kPinEnable;
for (uint16_t i = 0; i < 16; ++i) {
GPIOB->BRR = kPinClk;
if (data & 1) {
GPIOB->BSRR = kPinData;
} else {
GPIOB->BRR = kPinData;
}
data >>= 1;
GPIOB->BSRR = kPinClk;
}
GPIOB->BSRR = kPinEnable;
}
const uint8_t kDisplayWidth = 4;
const uint8_t kBrightnessLevels = 4;
uint16_t active_position_;
uint16_t brightness_pwm_cycle_;
uint16_t brightness_ = 3;
int main(void)
{
Init();
int t;
while(t++) {
uint16_t bbval = ((t << 1) ^ ((t << 1) + (t >> 7) & t >> 12)) | t >> (4 - (1 ^ 7 & (t >> 15))) | t >> 7;
Shift14SegmentsWord((uint16_t)bbval);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment