basic graphing
parent
77338a6b34
commit
a774e33cef
@ -0,0 +1,11 @@
|
|||||||
|
#ifndef FLASH_H_
|
||||||
|
#define FLASH_H_
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
void flash_init(void);
|
||||||
|
|
||||||
|
void flash_read(char *buf, uint32_t addr, unsigned int count);
|
||||||
|
void flash_write(const char *buf, uint32_t addr, unsigned int count);
|
||||||
|
|
||||||
|
#endif // FLASH_H_
|
@ -1 +1,37 @@
|
|||||||
print "Hello, world!"
|
func Fx
|
||||||
|
ret (arg0 * arg0)
|
||||||
|
end
|
||||||
|
|
||||||
|
# graph area
|
||||||
|
set plotx 0
|
||||||
|
set ploty 0
|
||||||
|
set plotw 479
|
||||||
|
set ploth 319
|
||||||
|
|
||||||
|
# graph range
|
||||||
|
set xmin (0 - 10)
|
||||||
|
set xmax 10
|
||||||
|
set ymin (0 - 10)
|
||||||
|
set ymax 10
|
||||||
|
|
||||||
|
set xinc (plotw / (xmax - xmin))
|
||||||
|
set yinc (ploth / (ymax - ymin))
|
||||||
|
|
||||||
|
# print axis
|
||||||
|
line 240 0 240 319 32767
|
||||||
|
line 0 160 479 160 32767
|
||||||
|
|
||||||
|
# do function
|
||||||
|
set x xmin
|
||||||
|
set cx (plotx + (plotw / 2))
|
||||||
|
set cy (ploty + (ploth / 2))
|
||||||
|
do
|
||||||
|
Fx x > y
|
||||||
|
set y (0 - y)
|
||||||
|
if ((y > ymin) & (y < ymax))
|
||||||
|
pixel (cx + (x * xinc)) (cy + (y * yinc)) 511
|
||||||
|
end
|
||||||
|
set x (x + (1 / xinc))
|
||||||
|
while (x < xmax)
|
||||||
|
|
||||||
|
print "Done."
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
do
|
||||||
|
getkey > input
|
||||||
|
print input
|
||||||
|
delay 1000
|
||||||
|
while (1)
|
||||||
|
|
||||||
|
#do
|
||||||
|
# getkey > input
|
||||||
|
# if (input & 4)
|
||||||
|
# rand 479 > x
|
||||||
|
# rand 319 > y
|
||||||
|
# rand 479 > i
|
||||||
|
# rand 319 > j
|
||||||
|
# rand 32767 > purple
|
||||||
|
#
|
||||||
|
# line x y i j purple
|
||||||
|
# end
|
||||||
|
#while (1)
|
||||||
|
#
|
||||||
|
#print "done"
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
print "Hello, world!"
|
Binary file not shown.
@ -0,0 +1,95 @@
|
|||||||
|
#include <stm32l476xx.h>
|
||||||
|
#include <gpio.h>
|
||||||
|
#include <clock.h>
|
||||||
|
|
||||||
|
#define READ 0x03
|
||||||
|
#define WRITE 0x02
|
||||||
|
#define WREN 0x06
|
||||||
|
#define WRDS 0x04
|
||||||
|
|
||||||
|
#define NSS GPIO_PORT(B, 12)
|
||||||
|
#define SCK GPIO_PORT(B, 13)
|
||||||
|
#define MISO GPIO_PORT(B, 14)
|
||||||
|
#define MOSI GPIO_PORT(B, 15)
|
||||||
|
|
||||||
|
void flash_xchg(char *byte, int count);
|
||||||
|
|
||||||
|
void flash_init(void)
|
||||||
|
{
|
||||||
|
gpio_mode(NSS, ALTERNATE);
|
||||||
|
gpio_mode(SCK, ALTERNATE);
|
||||||
|
gpio_mode(MISO, ALTERNATE);
|
||||||
|
gpio_mode(MOSI, ALTERNATE);
|
||||||
|
GPIOB->AFR[1] |= 0x55550000; // alt mode SPI2
|
||||||
|
|
||||||
|
// clock enable
|
||||||
|
RCC->APB1ENR1 |= RCC_APB1ENR1_SPI2EN;
|
||||||
|
|
||||||
|
SPI2->CR1 &= ~(SPI_CR1_BR_Msk);
|
||||||
|
SPI2->CR1 |= (3 << SPI_CR1_BR_Pos);
|
||||||
|
SPI2->CR1 |= SPI_CR1_SSM | SPI_CR1_SSI;
|
||||||
|
SPI2->CR1 |= SPI_CR1_MSTR;
|
||||||
|
SPI2->CR2 &= ~(SPI_CR2_DS_Msk);
|
||||||
|
SPI2->CR2 |= (7 << SPI_CR2_DS_Pos);
|
||||||
|
SPI2->CR2 |= SPI_CR2_SSOE;
|
||||||
|
SPI2->CR2 |= SPI_CR2_FRXTH;
|
||||||
|
SPI2->CR1 |= SPI_CR1_SPE;
|
||||||
|
|
||||||
|
char buf[3];
|
||||||
|
buf[0] = READ;
|
||||||
|
buf[1] = 0;
|
||||||
|
buf[2] = 0;
|
||||||
|
buf[3] = 0;
|
||||||
|
flash_xchg(buf, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
void flash_xchg(char *byte, int count)
|
||||||
|
{
|
||||||
|
uint32_t status = 0, dummy;
|
||||||
|
SPI2->CR1 &= ~(SPI_CR1_SSI);
|
||||||
|
while (SPI2->SR & SPI_SR_BSY);
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
SPI2->DR = byte[i];
|
||||||
|
do status = SPI2->SR;
|
||||||
|
while (status & SPI_SR_BSY);
|
||||||
|
// discard rx
|
||||||
|
while (status & SPI_SR_RXNE) {
|
||||||
|
dummy = SPI2->DR;
|
||||||
|
status = SPI2->SR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
do status = SPI2->SR;
|
||||||
|
while (status & SPI_SR_BSY);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
SPI2->DR = 0;
|
||||||
|
do status = SPI2->SR;
|
||||||
|
while (status & SPI_SR_BSY);
|
||||||
|
// discard rx
|
||||||
|
while (status & SPI_SR_RXNE) {
|
||||||
|
dummy = SPI2->DR;
|
||||||
|
status = SPI2->SR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SPI2->CR1 |= SPI_CR1_SSI;
|
||||||
|
(void)dummy;
|
||||||
|
}
|
||||||
|
|
||||||
|
void flash_read(char *buf, uint32_t addr, unsigned int count)
|
||||||
|
{
|
||||||
|
(void)buf;
|
||||||
|
(void)addr;
|
||||||
|
(void)count;
|
||||||
|
if (buf == 0)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void flash_write(const char *buf, uint32_t addr, unsigned int count)
|
||||||
|
{
|
||||||
|
(void)buf;
|
||||||
|
(void)addr;
|
||||||
|
(void)count;
|
||||||
|
if (buf == 0)
|
||||||
|
return;
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
#include <stm32l476xx.h>
|
||||||
|
#include <gpio.h>
|
||||||
|
|
||||||
|
#define ADDR 0x20
|
||||||
|
|
||||||
|
#define CONTROL 0x41
|
||||||
|
#define ADDRESS 0x12
|
||||||
|
|
||||||
|
void keypad_init(void)
|
||||||
|
{
|
||||||
|
// clock init
|
||||||
|
RCC->CCIPR &= ~(RCC_CCIPR_I2C1SEL_Msk);
|
||||||
|
RCC->CCIPR |= 2 << RCC_CCIPR_I2C1SEL_Pos;
|
||||||
|
RCC->APB1ENR1 |= RCC_APB1ENR1_I2C1EN;
|
||||||
|
|
||||||
|
// set times
|
||||||
|
// PRESC, SCLDEL, SDADEL, SCLH, SCLL
|
||||||
|
I2C1->TIMINGR = (0 << 28) | (2 << 20) | (0 << 16) | (2 << 8) | 4;
|
||||||
|
|
||||||
|
// gpio init
|
||||||
|
gpio_mode(GPIOB, 8, ALTERNATE);
|
||||||
|
gpio_mode(GPIOB, 9, ALTERNATE);
|
||||||
|
GPIOB->AFR[1] &= ~(0xFF);
|
||||||
|
GPIOB->AFR[1] |= 0x44;
|
||||||
|
|
||||||
|
// go go go
|
||||||
|
I2C1->CR1 |= I2C_CR1_PE;
|
||||||
|
|
||||||
|
I2C1->CR2 |= ADDR << 1;
|
||||||
|
//I2C1->CR2 |= I2C_CR2_RD_WRN;
|
||||||
|
I2C1->CR2 &= ~(I2C_CR2_NBYTES);
|
||||||
|
I2C1->CR2 |= 1 << I2C_CR2_NBYTES_Pos;
|
||||||
|
I2C1->CR2 |= I2C_CR2_RELOAD;
|
||||||
|
I2C1->CR2 |= I2C_CR2_START;
|
||||||
|
|
||||||
|
while (!(I2C1->ISR & I2C_ISR_TXE));
|
||||||
|
|
||||||
|
I2C1->TXDR = ADDRESS;
|
||||||
|
|
||||||
|
while (I2C1->ISR & I2C_ISR_BUSY);
|
||||||
|
|
||||||
|
I2C1->ICR |= 0x30;
|
||||||
|
I2C1->CR2 |= I2C_CR2_RD_WRN;
|
||||||
|
I2C1->CR2 |= I2C_CR2_RELOAD;
|
||||||
|
I2C1->CR2 |= I2C_CR2_START;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
while (!(I2C1->ISR & I2C_ISR_RXNE));
|
||||||
|
uint32_t v = I2C1->RXDR;
|
||||||
|
(void)v;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue