经不住诱惑,今天开始玩STM8!麻烦过来人进来讲讲心得

2019-12-26 18:53发布

1、买的STM8 value line discovery板刚到手,从最简单的STM8S003开始吧。
2、下载了STVD/COSMIC。COSMIC_32K坛里有和谐好的,不过要先下载原版安装。
3、争取今晚把LED点亮。
4、其实我很看好STM8L152,之后要测试一下耗电和ADC性能。
5、纯业余玩的,还没想好弄点啥……
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
77条回答
millwood0
2019-12-29 15:48
here is gpio.h


  1. #ifndef __GPIO_H
  2. #define __GPIO_H

  3. //port-related macros for stm8s
  4. //DEFAULT: OPEN DRAIN OUTPUT
  5. //set Px_CR1 and clear Px_CR2 to turn to push_pull output

  6. #define IO_SET(port, bits)        port |= (bits)                                //set bits on port
  7. #define IO_CLR(port, bits)        port &=~(bits)                                //clear bits on port
  8. #define IO_FLP(port, bits)        port ^= (bits)                                //flip bits on port

  9. #define IO_GET(port, bits)        ((port) & (bits))                        //return bits on port

  10. #define IO_OUT(ddr, bits)        ddr |= (bits)                                //set bits as output. stm8s: sets a bit to make it an output
  11. #define IO_IN(ddr, bits)        ddr &=~(bits)                                //set bits as input. stm8s: clears a bit to make it an input

  12. #define NOP()                         asm("nop")                            //nop
  13. #define NOP2()                                {NOP(); NOP();}
  14. #define NOP4()                                {NOP2(); NOP2();}
  15. #define NOP8()                                {NOP4(); NOP4();}
  16. #define NOP16()                                {NOP8(); NOP8();}

  17. #ifndef ei
  18.         #define ei()                        asm("rim")                                        //enable all interrupts
  19. #endif

  20. #ifndef di
  21.         #define di()                        asm("sim")                                        //disable all interrupts
  22. #endif
  23. #define __enable_interrupt()        ei()
  24. #define __disable_interrupt()        di()

  25. //fmaster = 16Mhz / 8 -> 2Mhz
  26. //fcpu = fmaster / 1 -> 2Mhz
  27. #define F_MASTER                        (16000000ul / 8)                                        //fmaster -> default to hsi (16mhz), divided by 8
  28. #define F_CPU                                (F_MASTER)                                        //fcpu

  29. //define ld1 on stm8sdiscovery board
  30. #define LED1_PORT                        PD_ODR
  31. #define LED1_DDR                        PD_DDR
  32. #define LED1                                (1<<0)

  33. //#define LED1_ON()                  IO_CLR(LED1_PORT, LED1)     //turn on the leds, assuming output mode
  34. //#define LED1_OFF()                 IO_SET(LED1_PORT, LED1)     //turn off the leds, assuming output mode
  35. //#define LED1_FLP()                IO_FLP(LED1_PORT, LED1)                //flip leds

  36. //void (*mcu_reset)(void) = 0x0000;                                         //jump to 0x0000 -> software reset

  37. //simple multiples
  38. #define x1(val)                                (val)                                                                //multiply val by 1
  39. #define x2(val)                                (((val) << 1))                                                //multiply val by 2
  40. #define x3(val)                                (x2(val) + (val))                                        //multiply val by 3
  41. #define x4(val)                                (((val) << 2))                                                //multiply val by 4
  42. #define x5(val)                                (x4(val) + (val))                                        //multiply val by 5
  43. #define x6(val)                                (x4(val) + x2(val))                                        //multiply val by 6
  44. #define x7(val)                                (x6(val) + (val))                                        //multiply val by 7
  45. #define x8(val)                                ((val) << 3)                                                //multiply val by 8
  46. #define x9(val)                                (x8(val) + (val))                                        //multiply val by 9

  47. //multiples of 10s
  48. #define x10(val)                        (x8(val) + x2(val))                                        //multiply val by 10
  49. #define x100(val)                        (x10(x10(val)))                                                //multiply val by 100
  50. #define x1000(val)                        (x100(x10(val)))                                        //multiply val by 1000
  51. #define x1k(val)                        x1000(val)                                                        //multiply val by 1000
  52. #define x10k(val)                        (x100(x100(val)))                                        //multiply val by 10000

  53. #define x20(val)                        (x2(x10(val)))
  54. #define x30(val)                        (x3(x10(val)))
  55. #define x40(val)                        (x4(x10(val)))
  56. #define x50(val)                        (x5(x10(val)))
  57. #define x60(val)                        (x6(x10(val)))
  58. #define x70(val)                        (x7(x10(val)))
  59. #define x80(val)                        (x8(x10(val)))
  60. #define x90(val)                        (x9(x10(val)))

  61. //multiples of 100s
  62. #define x200(val)                        (x2(x100(val)))
  63. #define x300(val)                        (x3(x100(val)))
  64. #define x400(val)                        (x4(x100(val)))
  65. #define x500(val)                        (x5(x100(val)))
  66. #define x600(val)                        (x6(x100(val)))
  67. #define x700(val)                        (x7(x100(val)))
  68. #define x800(val)                        (x8(x100(val)))
  69. #define x900(val)                        (x9(x100(val)))

  70. //custom definitions
  71. #define x34(val)                        (x30(val) + x4(val))                                //multiply val by 34
  72. #define x97(val)                        (x90(val) + x7(val))                                //multiply val by 97x

  73. #endif //__gpio_h_
复制代码you don't need to have all of it. it predefines LED1 (on PD0).

as well as F_CPU (running at 16Mhz / 8).

一周热门 更多>