// // Created by Guangzong Chen on 8/5/23. // #include "custom_prephrals.h" #include "bsp.h" GpioPin<&pc, 3> led1; GpioPin<&pc, 4> led2; GpioPin<&pc, 5> led3; GpioPin<&pb, 4> i2c3_sda; GpioPin<&pc, 0> i2c3_scl; GpioPin<&pb, 0> cam_pdwn; GpioPin<&pb, 1> cam_resetb; GpioPin<&pa, 8> cam_xclk; // tim1 ch1 GpioPin<&pc, 6> cam_d0; GpioPin<&pc, 7> cam_d1; GpioPin<&pc, 8> cam_d2; GpioPin<&pc, 9> cam_d3; GpioPin<&pc, 11> cam_d4; GpioPin<&pb, 6> cam_d5; GpioPin<&pb, 8> cam_d6; GpioPin<&pb, 9> cam_d7; GpioPin<&pb, 7> cam_vsync; GpioPin<&pa, 4> cam_hsync; GpioPin<&pa, 6> cam_pclk; GpioPin<&pb, 2> cus_btn; GpioPin<&pc, 1> sd_ck; GpioPin<&pa, 0> sd_cmd; GpioPin<&pb, 14> sd_d0; void setup_pins() { led1.setup(), led2.setup(), led3.setup(); i2c3_sda.setup(AF, 4, OPEN_DRAIN, LL_PULLUP); i2c3_scl.setup(AF, 4, OPEN_DRAIN, LL_PULLUP); cam_pdwn.setup(), cam_resetb.setup(); cam_xclk.setup(AF, 1); cam_d0.setup(AF, 10); cam_d1.setup(AF, 10); cam_d2.setup(AF, 10); cam_d3.setup(AF, 4); cam_d4.setup(AF, 10); cam_d5.setup(AF, 10); cam_d6.setup(AF, 10); cam_d7.setup(AF, 10); cam_pclk.setup(AF, 4); cam_hsync.setup(AF, 10); cam_vsync.setup(AF, 10); cus_btn.setup(INPUT, 0, PULL_PUSH, LL_PULLUP); // The circuit should be change // delay.ms(100, true); sd_ck.setup(AF, 12); sd_cmd.setup(AF, 12); sd_d0.setup(AF, 12); } void setup_timer() { tim1.init_default(); tim1.set_pwm(CH1, 4, 4); tim1.enable_output(CH1); // tim1 init_old } void cam_board_init(){ system_init(); setup_prepherials(); setup_pins(), setup_timer(), cam_i2c.init(); cam_pdwn.set_low(); cam_resetb.set_high(); }