fix hardfault when RT_CAN_USING_BUS_HOOK is enabled in bsp/stm32f10x

function `rt_pin_write` is invoked by  function `can_bus_hook`, and it should to be initialized by gpio.c.
but gpio.c was not added in SConscript
This commit is contained in:
gbcwbz 2016-04-14 23:47:32 +08:00
parent b420e83da4
commit 0d63eb5f6d
3 changed files with 7 additions and 1 deletions

View File

@ -12,6 +12,9 @@ led.c
usart.c usart.c
""") """)
if GetDepend(['RT_USING_PIN']):
src += ['gpio.c']
# add canbus driver. # add canbus driver.
if GetDepend('RT_USING_CAN'): if GetDepend('RT_USING_CAN'):
src += ['bxcan.c'] src += ['bxcan.c']

View File

@ -84,7 +84,7 @@
#define RT_USING_CAN #define RT_USING_CAN
//#define RT_CAN_USING_BUS_HOOK #define RT_CAN_USING_BUS_HOOK
#define RT_CAN_USING_HDR #define RT_CAN_USING_HDR
/* SECTION: device filesystem */ /* SECTION: device filesystem */

View File

@ -101,18 +101,21 @@ int rt_device_pin_register(const char *name, const struct rt_pin_ops *ops, void
/* RT-Thread Hardware PIN APIs */ /* RT-Thread Hardware PIN APIs */
void rt_pin_mode(rt_base_t pin, rt_base_t mode) void rt_pin_mode(rt_base_t pin, rt_base_t mode)
{ {
RT_ASSERT(_hw_pin.ops != RT_NULL);
_hw_pin.ops->pin_mode(&_hw_pin.parent, pin, mode); _hw_pin.ops->pin_mode(&_hw_pin.parent, pin, mode);
} }
FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_mode, pinMode, set hardware pin mode); FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_mode, pinMode, set hardware pin mode);
void rt_pin_write(rt_base_t pin, rt_base_t value) void rt_pin_write(rt_base_t pin, rt_base_t value)
{ {
RT_ASSERT(_hw_pin.ops != RT_NULL);
_hw_pin.ops->pin_write(&_hw_pin.parent, pin, value); _hw_pin.ops->pin_write(&_hw_pin.parent, pin, value);
} }
FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_write, pinWrite, write value to hardware pin); FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_write, pinWrite, write value to hardware pin);
int rt_pin_read(rt_base_t pin) int rt_pin_read(rt_base_t pin)
{ {
RT_ASSERT(_hw_pin.ops != RT_NULL);
return _hw_pin.ops->pin_read(&_hw_pin.parent, pin); return _hw_pin.ops->pin_read(&_hw_pin.parent, pin);
} }
FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_read, pinRead, read status from hardware pin); FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_read, pinRead, read status from hardware pin);