Skip to main content

bluepill_usbcdc/
lib.rs

1#![allow(non_camel_case_types)]
2#![no_std]
3
4extern "C" {
5    pub fn MX_USB_DEVICE_Init();
6    pub fn MX_GPIO_Init();
7    pub fn HAL_Init();
8    pub fn SystemClock_Config();
9    
10    /* interrupt handlers */
11    pub fn NMI_Handler();
12    pub fn HardFault_Handler();
13    pub fn MemManage_Handler();
14    pub fn BusFault_Handler();
15    pub fn UsageFault_Handler();
16    pub fn SVC_Handler();
17    pub fn DebugMon_Handler();
18    pub fn PendSV_Handler();
19    pub fn SysTick_Handler();
20    pub fn USB_LP_CAN1_RX0_IRQHandler();
21    /* send data to the host */
22    pub fn CDC_Transmit_FS(buf: *mut u8, len: u16) -> u32;
23    /* delay for some seconds */
24    pub fn HAL_Delay(delay: u32);
25    /* the buffer for received data */
26    pub static mut cdc_recv_data: [u8; 512];
27    pub static mut cdc_recv_len: u32;
28}
29
30pub fn nmi_handler() { unsafe { NMI_Handler(); }}
31pub fn hardfault_handler() { unsafe { HardFault_Handler(); }}
32pub fn mem_manage_handler() { unsafe { MemManage_Handler(); }}
33pub fn bus_fault_handler() { unsafe { BusFault_Handler(); }}
34pub fn svc_handler() { unsafe { SVC_Handler(); }}
35pub fn pend_sv_handler() { unsafe { PendSV_Handler(); }}
36pub fn systick_handler() { unsafe { SysTick_Handler(); }}
37pub fn usb_lp_can1_rx0_irqhandler() { unsafe { USB_LP_CAN1_RX0_IRQHandler(); }}
38
39pub fn cdc_send(buffer: &mut [u8], length: usize) -> bool {
40    unsafe {
41        CDC_Transmit_FS(&mut buffer[0] as *mut u8, length as u16) == 0
42    }
43}
44
45pub fn hal_delay(delay: u32) { unsafe { HAL_Delay(delay); }}
46pub fn hal_init() { unsafe { HAL_Init(); }}
47
48pub fn system_clock_config() { unsafe { SystemClock_Config(); }}
49pub fn gpio_init() { unsafe { MX_GPIO_Init(); }}
50pub fn usb_init() { unsafe { MX_USB_DEVICE_Init(); }}