Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
33bdd211
Commit
33bdd211
authored
Mar 14, 2014
by
Damien George
Browse files
Merge branch 'master' of github.com:micropython/micropython
Conflicts: stmhal/main.c
parents
b30c02af
deb413e8
Changes
6
Hide whitespace changes
Inline
Side-by-side
stmhal/hal/src/stm32f4xx_hal.c
View file @
33bdd211
...
...
@@ -281,11 +281,13 @@ uint32_t HAL_GetTick(void)
*/
void
HAL_Delay
(
__IO
uint32_t
Delay
)
{
uint32_t
timingdelay
;
timingdelay
=
HAL_GetTick
()
+
Delay
;
while
(
HAL_GetTick
()
<
timingdelay
)
{
uint32_t
start
=
HAL_GetTick
();
// Note that the following works (due to the magic of 2's complement numbers)
// even when Delay causes wraparound.
while
(
HAL_GetTick
()
-
start
<=
Delay
)
{
__WFI
();
// enter sleep mode, waiting for interrupt
}
}
...
...
stmhal/main.c
View file @
33bdd211
...
...
@@ -72,10 +72,10 @@ void flash_error(int n) {
for
(
int
i
=
0
;
i
<
n
;
i
++
)
{
led_state
(
PYB_LED_R1
,
1
);
led_state
(
PYB_LED_R2
,
0
);
sys_tick_d
elay
_ms
(
250
);
HAL_D
elay
(
250
);
led_state
(
PYB_LED_R1
,
0
);
led_state
(
PYB_LED_R2
,
1
);
sys_tick_d
elay
_ms
(
250
);
HAL_D
elay
(
250
);
}
led_state
(
PYB_LED_R2
,
0
);
}
...
...
@@ -248,7 +248,6 @@ int main(void) {
#endif
// basic sub-system init
sys_tick_init
();
pendsv_init
();
led_init
();
...
...
@@ -278,16 +277,16 @@ int main(void) {
while (1) {
led_state(led, 1);
usart_tx_strn_cooked(pyb_usart_global_debug, "on\n", 3);
sys_tick_d
elay
_ms
(100);
HAL_D
elay(100);
led_state(led, 0);
usart_tx_strn_cooked(pyb_usart_global_debug, "off\n", 4);
sys_tick_d
elay
_ms
(100);
HAL_D
elay(100);
led_state(led, 1);
usart_tx_strn_cooked(pyb_usart_global_debug, "on\n", 3);
sys_tick_d
elay
_ms
(100);
HAL_D
elay(100);
led_state(led, 0);
usart_tx_strn_cooked(pyb_usart_global_debug, "off\n", 4);
sys_tick_d
elay
_ms
(700);
HAL_D
elay(700);
led = (led % 4) + 1;
}
...
...
@@ -362,7 +361,7 @@ soft_reset:
reset_filesystem = false;
break;
}
sys_tick_d
elay
_ms
(10);
HAL_D
elay(10);
}
}
#endif
...
...
@@ -378,7 +377,7 @@ soft_reset:
// LED on to indicate creation of LFS
led_state(PYB_LED_R2, 1);
uint32_t st
c = sys_tick_counter
;
uint32_t st
art_tick = HAL_GetTick()
;
res = f_mkfs("0:", 0, 0);
if (res == FR_OK) {
...
...
@@ -400,7 +399,7 @@ soft_reset:
f_close(&fp);
// keep LED on for at least 200ms
sys_tick_wait_at_least(st
c
, 200);
sys_tick_wait_at_least(st
art_tick
, 200);
led_state(PYB_LED_R2, 0);
} else {
__fatal_error("could not access LFS");
...
...
@@ -424,7 +423,7 @@ soft_reset:
// LED on to indicate creation of boot.py
led_state(PYB_LED_R2, 1);
uint32_t st
c = sys_tick_counter
;
uint32_t st
art_tick = HAL_GetTick()
;
FIL fp;
f_open(&fp, "0:/boot.py", FA_WRITE | FA_CREATE_ALWAYS);
...
...
@@ -434,7 +433,7 @@ soft_reset:
f_close(&fp);
// keep LED on for at least 200ms
sys_tick_wait_at_least(st
c
, 200);
sys_tick_wait_at_least(st
art_tick
, 200);
led_state(PYB_LED_R2, 0);
}
}
...
...
@@ -550,7 +549,7 @@ soft_reset:
}
accel_read_nack();
usb_hid_send_report(data);
sys_tick_d
elay
_ms
(15);
HAL_D
elay(15);
}
}
#endif
...
...
stmhal/pybmodule.c
View file @
33bdd211
...
...
@@ -116,7 +116,7 @@ STATIC mp_obj_t pyb_millis(void) {
STATIC
MP_DEFINE_CONST_FUN_OBJ_0
(
pyb_millis_obj
,
pyb_millis
);
STATIC
mp_obj_t
pyb_delay
(
mp_obj_t
count
)
{
sys_tick_d
elay
_ms
(
mp_obj_get_int
(
count
));
HAL_D
elay
(
mp_obj_get_int
(
count
));
return
mp_const_none
;
}
...
...
stmhal/pyexec.c
View file @
33bdd211
...
...
@@ -59,7 +59,7 @@ int stdin_rx_chr(void) {
if
(
pyb_usart_global_debug
!=
PYB_USART_NONE
&&
usart_rx_any
(
pyb_usart_global_debug
))
{
return
usart_rx_char
(
pyb_usart_global_debug
);
}
sys_tick_d
elay
_ms
(
1
);
HAL_D
elay
(
1
);
#if 0
if (storage_needs_flush()) {
storage_flush();
...
...
@@ -142,7 +142,7 @@ int readline(vstr_t *line, const char *prompt) {
}
else
{
escape
=
0
;
}
sys_tick_d
elay
_ms
(
1
);
HAL_D
elay
(
1
);
}
}
...
...
stmhal/systick.c
View file @
33bdd211
...
...
@@ -2,47 +2,15 @@
#include "misc.h"
#include "systick.h"
void
sys_tick_init
(
void
)
{
// SysTick_Config is now called from HAL_RCC_ClockConfig, which is called
// from SystemClock_Config
// SysTick_Config sets the SysTick_IRQn to be the lowest priority, but
// we want it to be the highest priority, so fix things here.
HAL_NVIC_SetPriority
(
SysTick_IRQn
,
0
,
0
);
}
void
sys_tick_delay_ms
(
uint32_t
delay_ms
)
{
sys_tick_wait_at_least
(
HAL_GetTick
(),
delay_ms
);
}
// waits until at least delay_ms milliseconds have passed from the sampling of stc
// handles overflow properl
// assumes stc was taken from HAL_GetTick() some time before calling this function
// eg stc <= HAL_GetTick() for the case of no wrap around of HAL_GetTick()
void
sys_tick_wait_at_least
(
uint32_t
stc
,
uint32_t
delay_ms
)
{
// stc_wait is the value of HAL_GetTick() that we wait for
uint32_t
stc_wait
=
stc
+
delay_ms
;
if
(
stc_wait
<
stc
)
{
// stc_wait wrapped around
while
(
stc
<=
HAL_GetTick
()
||
HAL_GetTick
()
<
stc_wait
)
{
__WFI
();
// enter sleep mode, waiting for interrupt
}
}
else
{
// stc_wait did not wrap around
while
(
stc
<=
HAL_GetTick
()
&&
HAL_GetTick
()
<
stc_wait
)
{
__WFI
();
// enter sleep mode, waiting for interrupt
}
}
bool
sys_tick_has_passed
(
uint32_t
start_tick
,
uint32_t
delay_ms
)
{
return
HAL_GetTick
()
-
start_tick
>=
delay_ms
;
}
bool
sys_tick_has_passed
(
uint32_t
stc
,
uint32_t
delay_ms
)
{
// stc_wait is the value of HAL_GetTick() that we wait for
uint32_t
stc_wait
=
stc
+
delay_ms
;
if
(
stc_wait
<
stc
)
{
// stc_wait wrapped around
return
!
(
stc
<=
HAL_GetTick
()
||
HAL_GetTick
()
<
stc_wait
);
}
else
{
// stc_wait did not wrap around
return
!
(
stc
<=
HAL_GetTick
()
&&
HAL_GetTick
()
<
stc_wait
);
// waits until at least delay_ms milliseconds have passed from the sampling of
// startTick. Handles overflow properly. Assumes stc was taken from
// HAL_GetTick() some time before calling this function.
void
sys_tick_wait_at_least
(
uint32_t
start_tick
,
uint32_t
delay_ms
)
{
while
(
!
sys_tick_has_passed
(
start_tick
,
delay_ms
))
{
__WFI
();
// enter sleep mode, waiting for interrupt
}
}
stmhal/systick.h
View file @
33bdd211
void
sys_tick_init
(
void
);
void
SysTick_Handler
(
void
);
void
sys_tick_delay_ms
(
uint32_t
delay_ms
);
void
sys_tick_wait_at_least
(
uint32_t
stc
,
uint32_t
delay_ms
);
bool
sys_tick_has_passed
(
uint32_t
stc
,
uint32_t
delay_ms
);
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment