[M051] NUC1xxM051Seriescfg.h

[复制链接]
 楼主| hotpower 发表于 2011-5-10 21:39 | 显示全部楼层 |阅读模式
本帖最后由 缥缈九哥 于 2012-9-14 12:20 编辑
  1. /*---------------------------------------------------------------------------------
  2. 文 件 名 : NUC1xxM051Seriescfg.h(群内发布,外传必踢)
  3. 创 建 人 : Cortex-M0菜鸟HotPower
  4. 个 人 邮 箱 : HotPower@163.com
  5. HotPower@126.com
  6. HotPower@love.cn(MSN)
  7. HotWC3@qq.com
  8. 即 时 聊 天 : QQ(手机在线):1270688699
  9. QQ群(菜农Cortext-M0技术交流群):12047788
  10. 个 人 网 站 : www.HotPower.org
  11. www.HotPower.net
  12. www.HotPage.net.cn(农会导航窗口)
  13. 创 建 日 期 : 2010.10.18 18:18
  14. 最近修改日期 : 2011.3.18 20:18
  15. 创 建 地 点 : 西安大雁塔村队部
  16. 版 本 号 : V1.18 (NUC1xxM051Seriescfg助学版)
  17. 本版本只在《菜农Cortext-M0技术交流》群内局部发布。
  18. 修 改 原 因 : 本版本可在NUC1xx或M05x直接应用,规范并使寄存器模式也能控制到所有位
  19. 为了便于NUC1xx或M05x系列同时升级,菜农不再发布分离的版本。
  20. 说 明 : 菜农掌握本版本的最终解释权利。
  21. 由于本头文件为开源,出现问题恕不承担一切责任。
  22. 备 注 : 本头文件风格归属于菜农的《红杏出墙》系列,堪称“红杏级别”
  23. NUC1xx:
  24. 将本文件拷贝到...\CMSIS\CM0\DeviceSupport\Nuvoton\NUC1xx内。
  25. M051Seriesc:
  26. 将本文件拷贝到...\CMSIS\CM0\DeviceSupport\Nuvoton\M051Series内。
  27. 菜农友情提示 : 多位操作用Regs,一位用Bits,推荐用"."结构符,尽量用数组[x]
  28. 芯唐结构指针写法"->",菜农结构指针写法"x->",菜农结构写法"s."
  29. ----------------------------------------------------------------------------------*/
  30. #ifndef __NUC1xxM051Seriescfg_H__
  31. #define __NUC1xxM051Seriescfg_H__

  32. #ifdef __cplusplus
  33. extern "C" {
  34. #endif

  35. #if defined (__CC_ARM)
  36. #pragma anon_unions
  37. #endif

  38. typedef volatile unsigned int NU_REG;
  39. #define __noinit__ __attribute__((zero_init))//变量不初始化为0
  40. #define __code__(addr) __attribute__((at(addr))) const static//变量地址直接定位
  41. #define __flash__(addr) __attribute__((at(addr))) const static//变量地址直接定位
  42. #define __ram__(addr) __attribute__((at(addr)))//变量地址直接定位

  43. typedef enum
  44. {
  45. __0 = (NU_REG)0,
  46. __1 = (NU_REG)1,
  47. __2 = (NU_REG)2,
  48. __3 = (NU_REG)3,
  49. __4 = (NU_REG)4,
  50. __5 = (NU_REG)5,
  51. __6 = (NU_REG)6,
  52. __7 = (NU_REG)7,
  53. __8 = (NU_REG)8,
  54. __9 = (NU_REG)9,
  55. __10 = (NU_REG)10,
  56. __11 = (NU_REG)11,
  57. __12 = (NU_REG)12,
  58. __13 = (NU_REG)13,
  59. __14 = (NU_REG)14,
  60. __15 = (NU_REG)15,
  61. __16 = (NU_REG)16,
  62. __17 = (NU_REG)17,
  63. __18 = (NU_REG)18,
  64. __19 = (NU_REG)19,
  65. __20 = (NU_REG)20,
  66. __21 = (NU_REG)21,
  67. __22 = (NU_REG)22,
  68. __23 = (NU_REG)23,
  69. __24 = (NU_REG)24,
  70. __25 = (NU_REG)25,
  71. __26 = (NU_REG)26,
  72. __27 = (NU_REG)27,
  73. __28 = (NU_REG)28,
  74. __29 = (NU_REG)29,
  75. __30 = (NU_REG)30,
  76. __31 = (NU_REG)31
  77. }Number_enum;

  78. //-------------------------------------------------------//
  79. typedef enum
  80. {
  81. Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6, Bit7,
  82. Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15,
  83. Bit16, Bit17, Bit18, Bit19, Bit20, Bit21, Bit22, Bit23,
  84. Bit24, Bit25, Bit26, Bit27, Bit28, Bit29, Bit30, Bit31
  85. }NU_Bits_ENUM;

  86. typedef volatile struct
  87. {
  88. NU_REG Bit0: 1;
  89. NU_REG Bit1: 1;
  90. NU_REG Bit2: 1;
  91. NU_REG Bit3: 1;
  92. NU_REG Bit4: 1;
  93. NU_REG Bit5: 1;
  94. NU_REG Bit6: 1;
  95. NU_REG Bit7: 1;
  96. NU_REG Bit8: 1;
  97. NU_REG Bit9: 1;
  98. NU_REG Bit10: 1;
  99. NU_REG Bit11: 1;
  100. NU_REG Bit12: 1;
  101. NU_REG Bit13: 1;
  102. NU_REG Bit14: 1;
  103. NU_REG Bit15: 1;
  104. NU_REG Bit16: 1;
  105. NU_REG Bit17: 1;
  106. NU_REG Bit18: 1;
  107. NU_REG Bit19: 1;
  108. NU_REG Bit20: 1;
  109. NU_REG Bit21: 1;
  110. NU_REG Bit22: 1;
  111. NU_REG Bit23: 1;
  112. NU_REG Bit24: 1;
  113. NU_REG Bit25: 1;
  114. NU_REG Bit26: 1;
  115. NU_REG Bit27: 1;
  116. NU_REG Bit28: 1;
  117. NU_REG Bit29: 1;
  118. NU_REG Bit30: 1;
  119. NU_REG Bit31: 1;
  120. }NU_BITs;

  121. typedef volatile union
  122. {
  123. __IO NU_REG Regs;
  124. __IO NU_BITs Bits;
  125. }NU_REG_BITs;
  126. //----------------------------------------------------//
  127. typedef enum
  128. {
  129. Pin0, Pin1, Pin2, Pin3, Pin4, Pin5, Pin6, Pin7,
  130. Pin8, Pin9, Pin10, Pin11, Pin12, Pin13, Pin14, Pin15,
  131. Pin16, Pin17, Pin18, Pin19, Pin20, Pin21, Pin22, Pin23,
  132. Pin24, Pin25, Pin26, Pin27, Pin28, Pin29, Pin30, Pin31
  133. }NU_Pins_ENUM;

  134. typedef volatile struct
  135. {
  136. NU_REG Pin0: 1;
  137. NU_REG Pin1: 1;
  138. NU_REG Pin2: 1;
  139. NU_REG Pin3: 1;
  140. NU_REG Pin4: 1;
  141. NU_REG Pin5: 1;
  142. NU_REG Pin6: 1;
  143. NU_REG Pin7: 1;
  144. NU_REG Pin8: 1;
  145. NU_REG Pin9: 1;
  146. NU_REG Pin10: 1;
  147. NU_REG Pin11: 1;
  148. NU_REG Pin12: 1;
  149. NU_REG Pin13: 1;
  150. NU_REG Pin14: 1;
  151. NU_REG Pin15: 1;
  152. NU_REG Pin16: 1;
  153. NU_REG Pin17: 1;
  154. NU_REG Pin18: 1;
  155. NU_REG Pin19: 1;
  156. NU_REG Pin20: 1;
  157. NU_REG Pin21: 1;
  158. NU_REG Pin22: 1;
  159. NU_REG Pin23: 1;
  160. NU_REG Pin24: 1;
  161. NU_REG Pin25: 1;
  162. NU_REG Pin26: 1;
  163. NU_REG Pin27: 1;
  164. NU_REG Pin28: 1;
  165. NU_REG Pin29: 1;
  166. NU_REG Pin30: 1;
  167. NU_REG Pin31: 1;
  168. }NU_PINs;

  169. typedef volatile union
  170. {
  171. __IO NU_REG Regs;
  172. __IO NU_PINs Bits;
  173. }NU_REG_PINs;
  174. //----------------------------------------------------//
  175. typedef enum
  176. {
  177. GPIO_OFFD_OFFD0 = 16,GPIO_OFFD_OFFD1,GPIO_OFFD_OFFD2,GPIO_OFFD_OFFD3,
  178. GPIO_OFFD_OFFD4,GPIO_OFFD_OFFD5,GPIO_OFFD_OFFD6,GPIO_OFFD_OFFD7,
  179. GPIO_OFFD_OFFD8,GPIO_OFFD_OFFD9,GPIO_OFFD_OFFD10,GPIO_OFFD_OFFD11,
  180. GPIO_OFFD_OFFD12,GPIO_OFFD_OFFD13,GPIO_OFFD_OFFD14,GPIO_OFFD_OFFD15
  181. }NU_GPIO_OFFD_ENUM;
  182. typedef struct
  183. {
  184. __IO NU_REG RESERVED:16;
  185. __IO NU_REG OFFD0:1;
  186. __IO NU_REG OFFD1:1;
  187. __IO NU_REG OFFD2:1;
  188. __IO NU_REG OFFD3:1;
  189. __IO NU_REG OFFD4:1;
  190. __IO NU_REG OFFD5:1;
  191. __IO NU_REG OFFD6:1;
  192. __IO NU_REG OFFD7:1;
  193. __IO NU_REG OFFD8:1;
  194. __IO NU_REG OFFD9:1;
  195. __IO NU_REG OFFD10:1;
  196. __IO NU_REG OFFD11:1;
  197. __IO NU_REG OFFD12:1;
  198. __IO NU_REG OFFD13:1;
  199. __IO NU_REG OFFD14:1;
  200. __IO NU_REG OFFD15:1;
  201. }NU_GPIO_OFFD_Bits;

  202. typedef volatile union
  203. {
  204. NU_REG Regs;
  205. NU_GPIO_OFFD_Bits Bits;
  206. }NU_GPIO_OFFD_T;
  207. //---------------------------------------------------------------------------------//
  208. typedef enum
  209. {
  210. GPIO_PMD_INPUT,GPIO_PMD_OUTPUT,GPIO_PMD_OPENDRAIN,GPIO_PMD_QUASI
  211. }NU_GPIO_PMD_MODE_ENUM;

  212. typedef enum
  213. {
  214. PORT_PMD_INPUT,PORT_PMD_OUTPUT,PORT_PMD_OPENDRAIN,PORT_PMD_QUASI
  215. }NU_PORT_PMD_MODE_ENUM;

  216. typedef enum
  217. {
  218. GPIO_PMD_PMD0 = 0,GPIO_PMD_PMD1 = 2,GPIO_PMD_PMD2 = 4,GPIO_PMD_PMD3 = 6,
  219. GPIO_PMD_PMD4 = 8,GPIO_PMD_PMD5 = 10,GPIO_PMD_PMD6 = 12,GPIO_PMD_PMD7 = 164,
  220. GPIO_PMD_PMD8 = 16,GPIO_PMD_PMD9 = 18,GPIO_PMD_PMD10 = 20,GPIO_PMD_PMD11 = 22,
  221. GPIO_PMD_PMD12 = 24,GPIO_PMD_PMD13 = 26,GPIO_PMD_PMD14 = 28,GPIO_PMD_PMD15 = 30
  222. }NU_GPIO_PMD_ENUM;

  223. typedef enum
  224. {
  225. PORT_PMD_PMD0 = 0,PORT_PMD_PMD1 = 2,PORT_PMD_PMD2 = 4,PORT_PMD_PMD3 = 6,
  226. PORT_PMD_PMD4 = 8,PORT_PMD_PMD5 = 10,PORT_PMD_PMD6 = 12,PORT_PMD_PMD7 = 164,
  227. PORT_PMD_PMD8 = 16,PORT_PMD_PMD9 = 18,PORT_PMD_PMD10 = 20,PORT_PMD_PMD11 = 22,
  228. PORT_PMD_PMD12 = 24,PORT_PMD_PMD13 = 26,PORT_PMD_PMD14 = 28,PORT_PMD_PMD15 = 30
  229. }NU_PORT_PMD_ENUM;

  230. typedef volatile union
  231. {
  232. NU_REG Regs;
  233. GPIO_PMD_T Bits;
  234. }NU_GPIO_PMD_T;

  235. //----------------------------------------------------------------------------------//
  236. //改造GPIO为结构(不占用空间)
  237. typedef struct
  238. {
  239. NU_GPIO_PMD_T PMD;//模式控制(0输入1输出2开漏3准双向)
  240. NU_GPIO_OFFD_T OFFD;//数字使能(高16位)
  241. NU_REG_PINs DOUT;//数据输出值(低16位)
  242. NU_REG_PINs DMASK;//数据输出写屏蔽
  243. NU_REG_PINs PIN;//管脚数值(低16位)
  244. NU_REG_PINs DBEN;//防反弹使能
  245. NU_REG_PINs IMD;//中断模式控制(0边沿触发中断1电平触发中断)
  246. NU_REG_BITs IEN;//中断使能(高16位上升沿或高电平,低16位下降沿或低电平)
  247. NU_REG_PINs ISRC;//中断源标志
  248. NU_REG RESERVED[7];//保留,为了构造GPIO结构数组
  249. } NU_GPIO_T;
  250. #ifdef __NUC1xx_H__
  251. //--------------------------------------------------------------------//
  252. #define GPIOAs (*((NU_GPIO_T *) GPIOA_BASE))//定位全局结构变量GPIOAs
  253. #define GPIOBs (*((NU_GPIO_T *) GPIOB_BASE))//定位全局结构变量GPIOBs
  254. #define GPIOCs (*((NU_GPIO_T *) GPIOC_BASE))//定位全局结构变量GPIOCs
  255. #define GPIODs (*((NU_GPIO_T *) GPIOD_BASE))//定位全局结构变量GPIODs
  256. #define GPIOEs (*((NU_GPIO_T *) GPIOE_BASE))//定位全局结构变量GPIOEs
  257. //--------------------------------------------------------------------//
  258. #define PORTAs GPIOAs
  259. #define PORTBs GPIOBs
  260. #define PORTCs GPIOCs
  261. #define PORTDs GPIODs
  262. #define PORTEs GPIOEs
  263. //--------------------------------------------------------------------//
  264. #define PAs GPIOAs
  265. #define PBs GPIOBs
  266. #define PCs GPIOCs
  267. #define PDs GPIODs
  268. #define PEs GPIOEs
  269. //--------------------------------------------------------------------//
  270. #define GPIOx(x) ((NU_GPIO_T *) GPIOA_BASE + (x * 0x0040))
  271. #define PORTx(x) ((NU_GPIO_T *) GPIOA_BASE + (x * 0x0040))
  272. #define Px(x) ((NU_GPIO_T *) GPIOA_BASE + (x * 0x0040))
  273. #else
  274. //--------------------------------------------------------------------//
  275. #define GPIO0s (*((NU_GPIO_T *) PORT0_BASE))//定位全局结构变量GPIO0s
  276. #define GPIO1s (*((NU_GPIO_T *) PORT1_BASE))//定位全局结构变量GPIO1s
  277. #define GPIO2s (*((NU_GPIO_T *) PORT2_BASE))//定位全局结构变量GPIO2s
  278. #define GPIO3s (*((NU_GPIO_T *) PORT3_BASE))//定位全局结构变量GPIO3s
  279. #define GPIO4s (*((NU_GPIO_T *) PORT4_BASE))//定位全局结构变量GPIO4s
  280. //--------------------------------------------------------------------//
  281. #define PORT0s GPIO0s
  282. #define PORT1s GPIO1s
  283. #define PORT2s GPIO2s
  284. #define PORT3s GPIO3s
  285. #define PORT4s GPIO4s
  286. //--------------------------------------------------------------------//
  287. #define P0s GPIO0s
  288. #define P1s GPIO1s
  289. #define P2s GPIO2s
  290. #define P3s GPIO3s
  291. #define P4s GPIO4s
  292. //--------------------------------------------------------------------//
  293. #define GPIOx(x) ((NU_GPIO_T *) PORT0_BASE + (x * 0x0040))
  294. #define PORTx(x) ((NU_GPIO_T *) PORT0_BASE + (x * 0x0040))
  295. #define Px(x) ((NU_GPIO_T *) PORT0_BASE + (x * 0x0040))
  296. #endif
  297. //--------------------------------------------------------------------//
  298. typedef enum
  299. {
  300. GPIO_DBNCECON_DBCLKSEL = 0,
  301. GPIO_DBNCECON_DBCLKSRC = 4,
  302. GPIO_DBNCECON_ICLK_ON = 5
  303. }NU_GPIO_DBNCECON_ENUM;

  304. typedef volatile union
  305. {
  306. NU_REG Regs;
  307. GPIO_DBNCECON_T Bits;
  308. }NU_GPIO_DBNCECON_T;
  309. //--------------------------------------------------------------------//
  310. #ifndef __NUC1xx_H__//M05x
  311. typedef struct
  312. {
  313. __IO NU_REG DOUT:1;
  314. __I NU_REG RESERVE0:31;
  315. }NU_GPIO_BIT_DOUT_Bits;

  316. typedef volatile union
  317. {
  318. NU_REG Regs;
  319. NU_GPIO_BIT_DOUT_Bits Bits;
  320. }NU_GPIO_BIT_DOUT_T;
  321. typedef struct
  322. {
  323. union{
  324. NU_GPIO_BIT_DOUT_T Pinx[8];
  325. struct{
  326. NU_GPIO_BIT_DOUT_T Pin0;
  327. NU_GPIO_BIT_DOUT_T Pin1;
  328. NU_GPIO_BIT_DOUT_T Pin2;
  329. NU_GPIO_BIT_DOUT_T Pin3;
  330. NU_GPIO_BIT_DOUT_T Pin4;
  331. NU_GPIO_BIT_DOUT_T Pin5;
  332. NU_GPIO_BIT_DOUT_T Pin6;
  333. NU_GPIO_BIT_DOUT_T Pin7;
  334. };
  335. };
  336. }NU_GPIO_BIT_DOUT_Pins;
  337. typedef struct
  338. {
  339. union {
  340. __IO NU_GPIO_BIT_DOUT_Pins PBDx[5];//P0~P4
  341. struct {
  342. __IO NU_GPIO_BIT_DOUT_Pins PBD0;
  343. __IO NU_GPIO_BIT_DOUT_Pins PBD1;
  344. __IO NU_GPIO_BIT_DOUT_Pins PBD2;
  345. __IO NU_GPIO_BIT_DOUT_Pins PBD3;
  346. __IO NU_GPIO_BIT_DOUT_Pins PBD4;
  347. };
  348. };
  349. }NUS_BIT_DOUT, *NUPS_BIT_DOUT;
  350. #define NU_BASE_BIT_DOUT ((NUPS_BIT_DOUT) PORT_BIT_DOUT_BASE)//定义硬件结构指针(硬件地址)
  351. #define PBDs (*NU_BASE_BIT_DOUT)//定位全局结构变量DOUTs
  352. //--------------------------------------------------------------------//
  353. #define PBDx(x, bitdout) ((NU_GPIO_BIT_DOUT_T *) (PORT_BIT_DOUT_BASE + (x * 0x0020) + (bitdout * 4)))
  354. //--------------------------------------------------------------------//
  355. #endif
  356. //--------------------------------------------------------------------//

  357. typedef struct {
  358. union {
  359. __IO NU_GPIO_T Px[5];//GPIOs.Px[0].DOUT.Regs |= 1;GPIOs.Px[0].DOUT.Bits.Pin0 = 1;
  360. struct {
  361. #ifdef __NUC1xx_H__//NUC1xx
  362. __IO NU_GPIO_T PA;//GPIOs.PA.DOUT.Regs |=1;GPIOs.PA.DOUT.Bits.Pin0=1;
  363. __IO NU_GPIO_T PB;//GPIOs.PB.DOUT.Regs |=2;GPIOs.PB.DOUT.Bits.Pin1=1;
  364. __IO NU_GPIO_T PC;//GPIOs.PC.DOUT.Regs |=4;GPIOs.PC.DOUT.Bits.Pin2=1;
  365. __IO NU_GPIO_T PD;//GPIOs.PD.DOUT.Regs |=8;GPIOs.PD.DOUT.Bits.Pin3=1;
  366. __IO NU_GPIO_T PE;//GPIOs.PE.DOUT.Regs |=16;GPIOs.PE.DOUT.Bits.Pin4=1;
  367. #else//M05x
  368. __IO NU_GPIO_T P0;//GPIOs.P0.DOUT.Regs |=1;GPIOs.P0.DOUT.Bits.Pin0=1;
  369. __IO NU_GPIO_T P1;//GPIOs.P1.DOUT.Regs |=2;GPIOs.P1.DOUT.Bits.Pin1=1;
  370. __IO NU_GPIO_T P2;//GPIOs.P2.DOUT.Regs |=4;GPIOs.P2.DOUT.Bits.Pin2=1;
  371. __IO NU_GPIO_T P3;//GPIOs.P3.DOUT.Regs |=8;GPIOs.P3.DOUT.Bits.Pin3=1;
  372. __IO NU_GPIO_T P4;//GPIOs.P4.DOUT.Regs |=16;GPIOs.P4.DOUT.Bits.Pin4=1;
  373. #endif
  374. };
  375. };
  376. __I NU_REG RESERVED1[16];
  377. __IO NU_GPIO_DBNCECON_T DBNCECON;//
  378. #ifndef __NUC1xx_H__//M05x
  379. __I NU_REG RESERVED2[31];
  380. union {
  381. __IO NU_GPIO_BIT_DOUT_Pins PBDx[5];//P0~P4
  382. struct {
  383. __IO NU_GPIO_BIT_DOUT_Pins PBD0;
  384. __IO NU_GPIO_BIT_DOUT_Pins PBD1;
  385. __IO NU_GPIO_BIT_DOUT_Pins PBD2;
  386. __IO NU_GPIO_BIT_DOUT_Pins PBD3;
  387. __IO NU_GPIO_BIT_DOUT_Pins PBD4;
  388. };
  389. };
  390. #endif
  391. }NUS_GPIO, *NUPS_GPIO;

  392. #ifdef __NUC1xx_H__
  393. #define NU_BASE_GPIO ((NUPS_GPIO) GPIOA_BASE)//定义硬件结构指针(硬件地址)
  394. #define GPIOs (*NU_BASE_GPIO)//定位全局结构变量GPIOs
  395. #define PORTs (*NU_BASE_GPIO)//定位全局结构变量PORTs
  396. #else
  397. #define NU_BASE_GPIO ((NUPS_GPIO) PORT0_BASE)//定义硬件结构指针(硬件地址)
  398. #define GPIOs (*NU_BASE_GPIO)//定位全局结构变量GPIOs
  399. #define PORTs (*NU_BASE_GPIO)//定位全局结构变量PORTs
  400. #endif
  401. //-------------------------------------------------------------------------------------//
  402. typedef enum
  403. {
  404. SPI_CNTRL_GO_BUSY = 0,//通讯或忙状态标志
  405. SPI_CNTRL_RX_NEG = 1,//接收数据边沿反向位(0=SDI信号在SPICLK上升沿接收)
  406. SPI_CNTRL_TX_NEG = 2,//发送数据边沿反向位(0=SDO信号在SPICLK的上升沿发送)
  407. SPI_CNTRL_TX_BIT_LEN = 3,//传输位长度(32,1,...31)
  408. SPI_CNTRL_TX_NUM = 8,//发送/接收数量(00=每次传输仅完成1次发送/接收,01=每次传输仅完成2次发送/接收)
  409. SPI_CNTRL_LSB = 10,//优先传送LSB(0=优先发送/接收MSB,根据CNTRL寄存器的Tx_BIT_LEN 决定TxX/RxX)
  410. SPI_CNTRL_CLKP = 11,//时钟极性(0=SCLK低电平闲置)
  411. SPI_CNTRL_SP_CYCLE = 12,//暂缓间隙 (仅主机模式)
  412. SPI_CNTRL_IF = 16,//中断标志(0=表示传输未结束, 该位写1清零)
  413. SPI_CNTRL_IE = 17,//中断使能
  414. SPI_CNTRL_SLAVE = 18,//SLAVE模式标志(0=MCU作为主机模式)
  415. SPI_CNTRL_BYTE_REORDER = 19,
  416. SPI_CNTRL_TWOB= 21,
  417. SPI_CNTRL_VARCLK_EN = 22
  418. }NU_SPI_CNTRL_ENUM;

  419. typedef volatile union
  420. {
  421. NU_REG Regs;
  422. SPI_CNTRL_T Bits;
  423. }NU_SPI_CNTRL_T;
  424. //-------------------------------------------------------------------------------------//
  425. typedef enum
  426. {
  427. SPI_SSR_SSR = 0,//从机选择寄存器(主机模式)
  428. SPI_SSR_SS_LVL = 2,//从机选择触发电平选择
  429. SPI_SSR_AUTOSS = 3,//自动从机选择(主机模式)
  430. SPI_SSR_SS_LTRIG = 4,//从机电平触发选择(从机模式)
  431. SPI_SSR_LTRIG_FLAG = 5//电平触发标志
  432. }NU_SPI_SSR_ENUM;

  433. typedef volatile union
  434. {
  435. NU_REG Regs;
  436. SPI_SSR_T Bits;
  437. }NU_SPI_SSR_T;
  438. //-------------------------------------------------------------------------------------//
  439. #ifdef __NUC1xx_H__
  440. typedef enum
  441. {
  442. SPI_DMA_TX_DMA_GO = 0,//发送DMA开始(如果采用DMA发送数据,将不会对SPI_CNTRL寄存器的GO_BUSY位置位)
  443. SPI_DMA_RX_DMA_GO = 1//接收DMA开始
  444. }NU_SPI_DMA_ENUM;

  445. typedef volatile union
  446. {
  447. NU_REG Regs;
  448. SPI_DMA_T Bits;
  449. }NU_SPI_DMA_T;
  450. #endif
  451. //-------------------------------------------------------------------------------------//
  452. typedef enum
  453. {
  454. SPI_DIVIDER_TDIVIDER = 0,
  455. SPI_DIVIDER_TDIVIDER2 = 16
  456. }NU_SPI_DIVIDER_ENUM;

  457. typedef volatile union
  458. {
  459. NU_REG Regs;
  460. SPI_DIVIDER_T Bits;
  461. }NU_SPI_DIVIDER_T;
  462. //-------------------------------------------------------------------------------------//
  463. typedef struct
  464. {
  465. NU_SPI_CNTRL_T CNTRL;//控制及状态寄存器
  466. NU_SPI_DIVIDER_T DIVIDER;//时钟除频寄存器
  467. NU_SPI_SSR_T SSR;//从机选择寄存器
  468. NU_REG RESERVE0;//保留
  469. union{
  470. NU_REG_BITs RX[2];//接收数据寄存器数组
  471. struct{
  472. NU_REG_BITs RX0;//接收数据寄存器低32位
  473. NU_REG_BITs RX1;//接收数据寄存器高32位
  474. };
  475. };
  476. NU_REG RESERVE1[2];//保留
  477. union{
  478. NU_REG_BITs TX[2];//数据发送寄存器数组
  479. struct{
  480. NU_REG_BITs TX0;//数据发送寄存器低32位
  481. NU_REG_BITs TX1;//数据发送寄存器高32位
  482. };
  483. };
  484. NU_REG RESERVE2[3];//保留
  485. NU_REG_BITs VARCLK;
  486. #ifdef __NUC1xx_H__
  487. NU_SPI_DMA_T DMA;//SPIDMA控制寄存器
  488. #else
  489. NU_REG RESERVE3;//保留
  490. #endif
  491. }NU_SPI_T;
  492. //----------------------------------------------------//
  493. #define SPI0s (*((NU_SPI_T *) SPI0_BASE))//定位全局结构变量SPI0s
  494. #define SPI1s (*((NU_SPI_T *) SPI1_BASE))//定位全局结构变量SPI1s
  495. #define SPI2s (*((NU_SPI_T *) SPI2_BASE))//定位全局结构变量SPI2s
  496. #define SPI3s (*((NU_SPI_T *) SPI3_BASE))//定位全局结构变量SPI3s
  497. //----------------------------------------------------//
  498. #define SPIx(x) ((NU_SPI_T *) SPI0_BASE + ((x & 1) * 0x4000) + ((x >> 1) * 0x100000))
  499. //----------------------------------------------------//
  500. #ifdef __NUC1xx_H__
  501. typedef enum
  502. {
  503. PDMA_CSR_PDMACEN = 0,//PDMA通道使能
  504. PDMA_CSR_SW_RST = 1,//软件产生复位
  505. PDMA_CSR_MODE_SEL = 2,//PDMA模式选择
  506. PDMA_CSR_SAD_SEL = 4,//传输源地址方向选择
  507. PDMA_CSR_DAD_SEL = 6,//传输目的地址方向选择
  508. PDMA_CSR_WAR_BCR_SEL = 12,
  509. PDMA_CSR_APB_TWS = 19,//外设传输宽度选择
  510. PDMA_CSR_TRIG_EN = 23//PDMA数据读写传输使能(当PDMA传输完成, 该位自动清除.)
  511. }NU_PDMA_CSR_ENUM;

  512. typedef volatile union
  513. {
  514. NU_REG Regs;
  515. PDMA_CSR_T Bits;
  516. }NU_PDMA_CSR_T;
  517. //----------------------------------------------------//
  518. typedef enum
  519. {
  520. PDMA_CBCR_CBCR = 0
  521. }NU_PDMA_CBCR_ENUM;

  522. typedef volatile union
  523. {
  524. NU_REG Regs;
  525. PDMA_CBCR_T Bits;
  526. }NU_PDMA_CBCR_T;
  527. //----------------------------------------------------//
  528. typedef enum
  529. {
  530. PDMA_IER_TABORT_IE = 0,//读写异常使能
  531. PDMA_IER_BLKD_IE = 1,//Transfer Done中断使能
  532. PDMA_IER_WAR_IE = 2//Wrap Around中断使能
  533. }NU_PDMA_IER_ENUM;

  534. typedef volatile union
  535. {
  536. NU_REG Regs;
  537. PDMA_IER_T Bits;
  538. }NU_PDMA_IER_T;
  539. //----------------------------------------------------//
  540. typedef enum
  541. {
  542. PDMA_ISR_TABORT_IF = 0,//PDMA 读/写 目标异常中断标志位
  543. PDMA_ISR_BLKD_IF = 1,//Block 传递完成 中断标志位
  544. PDMA_ISR_WAR_BCR_IF= 8,//Wrap around传递字节计时器中断标志位
  545. PDMA_ISR_INTR = 31//中断管脚状态(只读)
  546. }NU_PDMA_ISR_ENUM;

  547. typedef volatile union
  548. {
  549. NU_REG Regs;
  550. PDMA_ISR_T Bits;
  551. }NU_PDMA_ISR_T;
  552. //----------------------------------------------------//
  553. typedef struct
  554. {
  555. NU_PDMA_CSR_T CSR;//控制寄存器
  556. NU_REG_BITs SAR;//源地址寄存器
  557. NU_REG_BITs DAR;//目的地址寄存器
  558. NU_REG_BITs BCR;//发送字节计数寄存器
  559. NU_REG_BITs POINT;//内部数据指示器
  560. NU_REG_BITs CSAR;//当前源目的地址
  561. NU_REG_BITs CDAR;//当前目的地址寄存器
  562. NU_PDMA_CBCR_T CBCR;//当前传输字节计数寄存器
  563. NU_PDMA_IER_T IER;//中断使能寄存器
  564. NU_PDMA_ISR_T ISR;//中断状态寄存器
  565. union{
  566. NU_REG_BITs SBUF[4];//共享缓冲FIFO
  567. struct{
  568. NU_REG_BITs SBUF0;//共享缓冲FIFO
  569. NU_REG_BITs SBUF1;//共享缓冲FIFO
  570. NU_REG_BITs SBUF2;//共享缓冲FIFO
  571. NU_REG_BITs SBUF3;//共享缓冲FIFO
  572. };
  573. };
  574. }NU_PDMA_T;
  575. //----------------------------------------------------//
  576. #define PDMA0s (*((NU_PDMA_T *) PDMA0_BASE))//定位全局结构变量PDMA0s
  577. #define PDMA1s (*((NU_PDMA_T *) PDMA1_BASE))//定位全局结构变量PDMA1s
  578. #define PDMA2s (*((NU_PDMA_T *) PDMA2_BASE))//定位全局结构变量PDMA2s
  579. #define PDMA3s (*((NU_PDMA_T *) PDMA3_BASE))//定位全局结构变量PDMA3s
  580. #define PDMA4s (*((NU_PDMA_T *) PDMA4_BASE))//定位全局结构变量PDMA4s
  581. #define PDMA5s (*((NU_PDMA_T *) PDMA5_BASE))//定位全局结构变量PDMA5s
  582. #define PDMA6s (*((NU_PDMA_T *) PDMA6_BASE))//定位全局结构变量PDMA6s
  583. #define PDMA7s (*((NU_PDMA_T *) PDMA7_BASE))//定位全局结构变量PDMA7s
  584. #define PDMA8s (*((NU_PDMA_T *) PDMA8_BASE))//定位全局结构变量PDMA8s
  585. //----------------------------------------------------//
  586. #define PDMAx(x) ((NU_PDMA_T *) PDMA0_BASE + (x * 0x0100))
  587. //----------------------------------------------------//
  588. typedef struct {
  589. union {
  590. __IO NU_PDMA_T CHx[16];
  591. struct {
  592. __IO NU_PDMA_T CH0;
  593. __IO NU_PDMA_T CH1;
  594. __IO NU_PDMA_T CH2;
  595. __IO NU_PDMA_T CH3;
  596. __IO NU_PDMA_T CH4;
  597. __IO NU_PDMA_T CH5;
  598. __IO NU_PDMA_T CH6;
  599. __IO NU_PDMA_T CH7;
  600. __IO NU_PDMA_T CH8;
  601. __IO NU_PDMA_T RESERVE[7];
  602. };
  603. };
  604. }NUS_PDMA, *NUPS_PDMA;
  605. //----------------------------------------------------//
  606. #define NU_BASE_PDMA ((NUPS_PDMA) PDMA0_BASE)//定义硬件结构指针(硬件地址)
  607. #define PDMAs (*NU_BASE_PDMA)//定位全局结构变量PDMAs
  608. #endif
  609. //----------------------------------------------------//
  610. typedef enum
  611. {
  612. TIMER_TCSR_PRESCALE = 0,//预分频计数器
  613. TIMER_TCSR_TDR_EN = 16,//数据锁存使能
  614. TIMER_TCSR_COUNTER_EN = 24,//
  615. TIMER_TCSR_CACT = 25,//定时器工作状态
  616. TIMER_TCSR_CRST = 26,//计数器重置
  617. TIMER_TCSR_MODE = 27,//定时器工作模式
  618. TIMER_TCSR_TMR_IE = 29,//中断使能
  619. TIMER_TCSR_CEN = 30,//计数器使能位
  620. TIMER_TCSR_nDBGACK_EN = 31
  621. }NU_TIMER_TCSR_ENUM;

  622. typedef volatile union
  623. {
  624. NU_REG Regs;
  625. TIMER_TCSR_T Bits;
  626. }NU_TIMER_TCSR_T;
  627. //----------------------------------------------------//
  628. typedef enum
  629. {
  630. TIMER_TISR_TIF = 0//定时器中断标志
  631. }NU_TIMER_TISR_T_ENUM;

  632. typedef volatile union
  633. {
  634. NU_REG Regs;
  635. TIMER_TISR_T Bits;
  636. }NU_TIMER_TISR_T;
  637. //----------------------------------------------------//
  638. typedef struct
  639. {
  640. __IO NU_TIMER_TCSR_T TCSR;//控制与状态寄存器
  641. __IO NU_REG_BITs TCMPR;//比较寄存器
  642. __IO NU_TIMER_TISR_T TISR;//中断状态寄存器
  643. __IO NU_REG_BITs TDR;//数据寄存器
  644. }NU_TIMER_T;
  645. //----------------------------------------------------//
  646. #define TIMER0s (*((NU_TIMER_T *) TIMER0_BASE))//定位全局结构变量TIMER0s
  647. #define TIMER1s (*((NU_TIMER_T *) TIMER1_BASE))//定位全局结构变量TIMER1s
  648. #define TIMER2s (*((NU_TIMER_T *) TIMER2_BASE))//定位全局结构变量TIMER2s
  649. #define TIMER3s (*((NU_TIMER_T *) TIMER3_BASE))//定位全局结构变量TIMER3s
  650. //----------------------------------------------------//
  651. #define TIMERx(x) ((NU_TIMER_T *)TIMER0_BASE + ((x & 1) * 0x0020) + ((x >> 1) * 0x100000))
  652. //----------------------------------------------------//
  653. typedef enum
  654. {
  655. I2C_START = 0x08, //已发送起始条件
  656. I2C_REP_START = 0x10, //已发送重复起始条件
  657. /* Master Transmitter */ //主发送器模式
  658. I2C_MT_SLA_ACK = 0x18, //已发送SLA+W,且已接收ACK
  659. I2C_MT_SLA_NACK = 0x20, //已发送SLA+W,且未接收ACK
  660. I2C_MT_DATA_ACK = 0x28, //已发送I2DAT 中的数据字节,且已接收ACK
  661. I2C_MT_DATA_NACK = 0x30, //已发送I2DAT 中的数据字节,且未接收ACK
  662. I2C_MT_ARB_LOST = 0x38,
  663. /* Master Receiver */ //主接收器模式
  664. I2C_MR_ARB_LOST = 0x38,
  665. I2C_MR_SLA_ACK = 0x40, //已发送SLA+R,且已接收ACK
  666. I2C_MR_SLA_NACK = 0x48, //已发送SLA+R,且未接收ACK
  667. I2C_MR_DATA_ACK = 0x50,
  668. I2C_MR_DATA_NACK = 0x58,
  669. /* Slave Transmitter */
  670. I2C_ST_SLA_ACK = 0xA8,
  671. I2C_ST_ARB_LOST_SLA_ACK = 0xB0,
  672. I2C_ST_DATA_ACK = 0xB8,
  673. I2C_ST_DATA_NACK = 0xC0,
  674. I2C_ST_LAST_DATA = 0xC8,
  675. /* Slave Receiver */
  676. I2C_SR_SLA_ACK = 0x60,
  677. I2C_SR_ARB_LOST_SLA_ACK = 0x68,
  678. I2C_SR_GCALL_ACK = 0x70,
  679. I2C_SR_ARB_LOST_GCALL_ACK = 0x78,
  680. I2C_SR_DATA_ACK = 0x80,
  681. I2C_SR_DATA_NACK = 0x88,
  682. I2C_SR_GCALL_DATA_ACK = 0x90,
  683. I2C_SR_GCALL_DATA_NACK = 0x98,
  684. I2C_SR_STOP = 0xA0,
  685. /* Misc */
  686. I2C_NO_INFO = 0xF8,
  687. I2C_BUS_ERROR = 0x00,
  688. I2C_BUS_OK = 0xFF
  689. }NU_I2C_STATUS_ENUM;
  690. //----------------------------------------------------//
  691. typedef enum
  692. {
  693. I2C_CON_AA = 2,//I2C接收应答标志位
  694. I2C_CON_SI = 3,//I2C中断标志位
  695. I2C_CON_STO = 4,//I2C停止标志
  696. I2C_CON_STA = 5,//I2C起始标志
  697. I2C_CON_ENSI = 6,//I2C控制使能/禁止
  698. I2C_CON_EI = 7 //使能中断
  699. }NU_I2C_CON_ENUM;

  700. typedef volatile union
  701. {
  702. NU_REG Regs;
  703. I2C_CON_T Bits;
  704. }NU_I2C_CON_T;
  705. //----------------------------------------------------//
  706. typedef enum
  707. {
  708. I2C_ADDR_GC = 0,//全呼功能
  709. I2C_ADDR_ADDR = 1 //I2C地址寄存器
  710. }NU_I2C_ADDR_ENUM;

  711. typedef volatile union
  712. {
  713. NU_REG Regs;
  714. I2C_ADDR_T Bits;
  715. }NU_I2C_ADDR_T;
  716. //----------------------------------------------------//
  717. typedef enum
  718. {
  719. I2C_ADRM_ADM = 1 //I2C隐藏地址寄存器
  720. }NU_I2C_ADRM_ENUM;

  721. typedef volatile union
  722. {
  723. NU_REG Regs;
  724. I2C_ADRM_T Bits;
  725. }NU_I2C_ADRM_T;
  726. //----------------------------------------------------//
  727. typedef enum
  728. {
  729. I2C_TOC_TIF = 0,//超时标志
  730. I2C_TOC_DIV4 = 1,//超时计数输入时钟除4
  731. I2C_TOC_ENTI = 2 //超时计数使能/禁止
  732. }NU_I2C_TOC_NUM;

  733. typedef volatile union
  734. {
  735. NU_REG Regs;
  736. I2C_TOC_T Bits;
  737. }NU_I2C_TOC_T;
  738. //----------------------------------------------------//
  739. typedef struct
  740. {
  741. __IO NU_I2C_CON_T CON;//I2C控制寄存器
  742. __IO NU_I2C_ADDR_T ADDR0;//I2C从机地址寄存器0
  743. __IO NU_REG_BITs DATA;//I2C数据寄存器
  744. __IO NU_REG_BITs STATUS;//I2C状态寄存器
  745. __IO NU_REG_BITs CLK;//I2C时钟时钟分频寄存器
  746. __IO NU_I2C_TOC_T TOC;//I2C超时控制寄存器
  747. __IO NU_I2C_ADDR_T ADDR1;//从机地址寄存器1
  748. __IO NU_I2C_ADDR_T ADDR2;//从机地址寄存器2
  749. __IO NU_I2C_ADDR_T ADDR3;//从机地址寄存器3
  750. __IO NU_I2C_ADRM_T ADRM0;//从机隐藏地址寄存器0
  751. __IO NU_I2C_ADRM_T ADRM1;//从机隐藏地址寄存器1
  752. __IO NU_I2C_ADRM_T ADRM2;//从机隐藏地址寄存器2
  753. __IO NU_I2C_ADRM_T ADRM3;//从机隐藏地址寄存器3
  754. #ifdef __NUC1xx_H__
  755. __IO NU_REG RESERVE[((I2C1_BASE - I2C0_BASE) - sizeof(I2C_T)) / sizeof(NU_REG)];
  756. #endif
  757. }NU_I2C_T;
  758. #ifdef __NUC1xx_H__
  759. //----------------------------------------------------//
  760. typedef struct {
  761. union {
  762. __IO NU_I2C_T PORT[2];
  763. struct {
  764. __IO NU_I2C_T PORT0;
  765. __IO NU_I2C_T PORT1;
  766. };
  767. };
  768. }NUS_I2C, *NUPS_I2C;
  769. //----------------------------------------------------//
  770. #define NU_BASE_I2C ((NUPS_I2C) I2C0_BASE)//定义硬件结构指针(硬件地址)
  771. #define I2Cs (*NU_BASE_I2C)//定位全局结构变量I2Cs
  772. //----------------------------------------------------//
  773. #define I2C0s (*((NU_I2C_T *) I2C0_BASE))//定位全局结构变量I2C0s
  774. #define I2C1s (*((NU_I2C_T *) I2C1_BASE))//定位全局结构变量I2C0s
  775. //----------------------------------------------------//
  776. #define I2Cx(x) ((NU_I2C_T *) I2C0_BASE + (x * 0x100000))
  777. #else
  778. //----------------------------------------------------//
  779. #define I2Cs (*((NU_I2C_T *) I2C_BASE))//定位全局结构变量I2Cs
  780. //----------------------------------------------------//
  781. #define I2Cx ((NU_I2C_T *) I2C_BASE)
  782. #endif
  783. //----------------------------------------------------//
  784. typedef enum
  785. {
  786. PWM_PPR_CP01 = 0,//PWM定时器0&1的时钟预分频
  787. PWM_PPR_CP23 = 8,//PWM定时器2&3的时钟预分频
  788. PWM_PPR_DZI01 = 16,//PWM0与PWM1的死区间隔寄存器
  789. PWM_PPR_DZI23 = 24,//PWM2与PWM3的死区间隔寄存器
  790. PWM_PPR_CP45 = 0,//PWM定时器4&5的时钟预分频
  791. PWM_PPR_CP67 = 8,//PWM定时器6&7的时钟预分频
  792. PWM_PPR_DZI45 = 16,//PWM4与PWM5的死区间隔寄存器
  793. PWM_PPR_DZI67 = 24//PWM6与PWM7的死区间隔寄存器
  794. }NU_PWM_PPR_ENUM;

  795. typedef enum
  796. {
  797. PWM_PPR03_CP01 = 0,//PWM定时器0&1的时钟预分频0
  798. PWM_PPR03_CP23 = 8,//PWM定时器2&3的时钟预分频2
  799. PWM_PPR03_DZI01 = 16,//PWM0与PWM1的死区间隔寄存器
  800. PWM_PPR03_DZI23 = 24//PWM2与PWM3的死区间隔寄存器
  801. }NU_PWM_PPR03_ENUM;

  802. typedef volatile union
  803. {
  804. NU_REG Regs;
  805. PWM_PPR_T Bits;
  806. }NU_PWM_PPR_T;
  807. //----------------------------------------------------//
  808. typedef enum
  809. {
  810. PWM_PPR47_CP45 = 0,//PWM定时器4&5的时钟预分频0
  811. PWM_PPR47_CP67 = 8,//PWM定时器6&7的时钟预分频2
  812. PWM_PPR47_DZI45 = 16,//PWM4与PWM5的死区间隔寄存器
  813. PWM_PPR47_DZI67 = 24//PWM6与PWM7的死区间隔寄存器
  814. }NU_PWM_PPR47_ENUM;

  815. typedef struct
  816. {
  817. __IO NU_REG CP45:8;
  818. __IO NU_REG CP67:8;
  819. __IO NU_REG DZI45:8;
  820. __IO NU_REG DZI67:8;
  821. }NU_PWM_PPR_Bits;

  822. typedef volatile union
  823. {
  824. NU_REG Regs;
  825. NU_PWM_PPR_Bits Bits;
  826. }NU_PWM_PPR47_T;
  827. //----------------------------------------------------//
  828. typedef enum
  829. {
  830. PWM_CSR_CSR0 = 0,//定时器0时钟源选择
  831. PWM_CSR_CSR1 = 4,//定时器1时钟源选择
  832. PWM_CSR_CSR2 = 8,//定时器2时钟源选择
  833. PWM_CSR_CSR3 = 12,//定时器3时钟源选择
  834. PWM_CSR_CSR4 = 0,//定时器4时钟源选择
  835. PWM_CSR_CSR5 = 4,//定时器5时钟源选择
  836. PWM_CSR_CSR6 = 8,//定时器6时钟源选择
  837. PWM_CSR_CSR7 = 12//定时器7时钟源选择
  838. }NU_PWM_CSR_ENUM;

  839. typedef enum
  840. {
  841. PWM_CSR03_CSR0 = 0,//定时器0时钟源选择
  842. PWM_CSR03_CSR1 = 4,//定时器1时钟源选择
  843. PWM_CSR03_CSR2 = 8,//定时器2时钟源选择
  844. PWM_CSR03_CSR3 = 12//定时器3时钟源选择
  845. }NU_PWM_CSR03_ENUM;

  846. typedef volatile union
  847. {
  848. NU_REG Regs;
  849. PWM_CSR_T Bits;
  850. }NU_PWM_CSR_T;
  851. //----------------------------------------------------//
  852. typedef enum
  853. {
  854. PWM_CSR47_CSR4 = 0,//定时器4时钟源选择
  855. PWM_CSR47_CSR5 = 4,//定时器5时钟源选择
  856. PWM_CSR47_CSR6 = 8,//定时器6时钟源选择
  857. PWM_CSR47_CSR7 = 12//定时器7时钟源选择
  858. }NU_PWM_CSR47_ENUM;

  859. typedef struct
  860. {
  861. __IO NU_REG CSR4:3;
  862. __I NU_REG RESERVE0:1;
  863. __IO NU_REG CSR5:3;
  864. __I NU_REG RESERVE1:1;
  865. __IO NU_REG CSR6:3;
  866. __I NU_REG RESERVE2:1;
  867. __IO NU_REG CSR7:3;
  868. __I NU_REG RESERVE3:17;
  869. }NU_PWM_CSR47_Bits;

  870. typedef volatile union
  871. {
  872. NU_REG Regs;
  873. NU_PWM_CSR47_Bits Bits;
  874. }NU_PWM_CSR47_T;
  875. //----------------------------------------------------//
  876. typedef enum
  877. {
  878. PWM_PCR_CH0EN = 0,//PWM定时器0使能/禁止
  879. PWM_PCR_CH0INV = 2,//PWM定时器0反向打开/关闭
  880. PWM_PCR_CH0MOD = 3,//PWM定时器0自动加载/单触发模式选择
  881. PWM_PCR_DZEN01 = 4,//死区发生器0使能/禁止
  882. PWM_PCR_DZEN23 = 5,//死区发生器2使能/禁止
  883. PWM_PCR_CH1EN = 8,//PWM定时器1使能/禁止
  884. PWM_PCR_CH1INV = 10,//PWM定时器1反向打开/关闭
  885. PWM_PCR_CH1MOD = 11,//PWM定时器1自动重载/单触发模式选择
  886. PWM_PCR_CH2EN = 16,//PWM定时器2使能/禁止
  887. PWM_PCR_CH2INV = 18,//PWM定时器2反向打开/关闭
  888. PWM_PCR_CH2MOD = 19,//PWM定时器2自动重载/单触发模式选择
  889. PWM_PCR_CH3EN = 24,//PWM定时器3使能/禁止
  890. PWM_PCR_CH3INV = 26,//PWM定时器3反向打开/关闭
  891. PWM_PCR_CH3MOD = 27,//PWM定时器3自动重载/单触发模式选择
  892. PWM_PCR_CH4EN = 0,//PWM定时器4使能/禁止
  893. PWM_PCR_CH4INV = 2,//PWM定时器4反向打开/关闭
  894. PWM_PCR_CH4MOD = 3,//PWM定时器4自动加载/单触发模式选择
  895. PWM_PCR_DZEN45 = 4,//死区发生器4使能/禁止
  896. PWM_PCR_DZEN67 = 5,//死区发生器6使能/禁止
  897. PWM_PCR_CH5EN = 8,//PWM定时器5使能/禁止
  898. PWM_PCR_CH5INV = 10,//PWM定时器5反向打开/关闭
  899. PWM_PCR_CH5MOD = 11,//PWM定时器5自动重载/单触发模式选择
  900. PWM_PCR_CH6EN = 16,//PWM定时器6使能/禁止
  901. PWM_PCR_CH6INV = 18,//PWM定时器6反向打开/关闭
  902. PWM_PCR_CH6MOD = 19,//PWM定时器6自动重载/单触发模式选择
  903. PWM_PCR_CH7EN = 24,//PWM定时器7使能/禁止
  904. PWM_PCR_CH7INV = 26,//PWM定时器7反向打开/关闭
  905. PWM_PCR_CH7MOD = 27,//PWM定时器7自动重载/单触发模式选择
  906. }NU_PWM_PCR_ENUM;

  907. typedef enum
  908. {
  909. PWM_PCR03_CH0EN = 0,//PWM定时器0使能/禁止
  910. PWM_PCR03_CH0INV = 2,//PWM定时器0反向打开/关闭
  911. PWM_PCR03_CH0MOD = 3,//PWM定时器0自动加载/单触发模式选择
  912. PWM_PCR03_DZEN01 = 4,//死区发生器0使能/禁止
  913. PWM_PCR03_DZEN23 = 5,//死区发生器2使能/禁止
  914. PWM_PCR03_CH1EN = 8,//PWM定时器1使能/禁止
  915. PWM_PCR03_CH1INV = 10,//PWM定时器1反向打开/关闭
  916. PWM_PCR03_CH1MOD = 11,//PWM定时器1自动重载/单触发模式选择
  917. PWM_PCR03_CH2EN = 16,//PWM定时器2使能/禁止
  918. PWM_PCR03_CH2INV = 18,//PWM定时器2反向打开/关闭
  919. PWM_PCR03_CH2MOD = 19,//PWM定时器2自动重载/单触发模式选择
  920. PWM_PCR03_CH3EN = 24,//PWM定时器3使能/禁止
  921. PWM_PCR03_CH3INV = 26,//PWM定时器3反向打开/关闭
  922. PWM_PCR03_CH3MOD = 27,//PWM定时器3自动重载/单触发模式选择
  923. }NU_PWM_PCR03_ENUM;

  924. typedef volatile union
  925. {
  926. NU_REG Regs;
  927. PWM_PCR_T Bits;
  928. }NU_PWM_PCR_T;
  929. //----------------------------------------------------//
  930. typedef enum
  931. {
  932. PWM_PCR47_CH4EN = 0,//PWM定时器4使能/禁止
  933. PWM_PCR47_CH4INV = 2,//PWM定时器4反向打开/关闭
  934. PWM_PCR47_CH4MOD = 3,//PWM定时器4自动加载/单触发模式选择
  935. PWM_PCR47_DZEN45 = 4,//死区发生器4使能/禁止
  936. PWM_PCR47_DZEN67 = 5,//死区发生器6使能/禁止
  937. PWM_PCR47_CH5EN = 8,//PWM定时器5使能/禁止
  938. PWM_PCR47_CH5INV = 10,//PWM定时器5反向打开/关闭
  939. PWM_PCR47_CH5MOD = 11,//PWM定时器5自动重载/单触发模式选择
  940. PWM_PCR47_CH6EN = 16,//PWM定时器6使能/禁止
  941. PWM_PCR47_CH6INV = 18,//PWM定时器6反向打开/关闭
  942. PWM_PCR47_CH6MOD = 19,//PWM定时器6自动重载/单触发模式选择
  943. PWM_PCR47_CH7EN = 24,//PWM定时器7使能/禁止
  944. PWM_PCR47_CH7INV = 26,//PWM定时器7反向打开/关闭
  945. PWM_PCR47_CH7MOD = 27,//PWM定时器7自动重载/单触发模式选择
  946. }NU_PWM_PCR47_ENUM;

  947. typedef struct
  948. {
  949. __IO NU_REG CH4EN:1;
  950. __I NU_REG RESERVE0:1;
  951. __IO NU_REG CH4INV:1;
  952. __IO NU_REG CH4MOD:1;
  953. __IO NU_REG DZEN45:1;
  954. __IO NU_REG DZEN67:1;
  955. __I NU_REG RESERVE1:2;
  956. __IO NU_REG CH5EN:1;
  957. __I NU_REG RESERVE2:1;
  958. __IO NU_REG CH5INV:1;
  959. __IO NU_REG CH5MOD:1;
  960. __I NU_REG RESERVE3:4;
  961. __IO NU_REG CH6EN:1;
  962. __I NU_REG RESERVE4:1;
  963. __IO NU_REG CH6INV:1;
  964. __IO NU_REG CH6MOD:1;
  965. __I NU_REG RESERVE5:4;
  966. __IO NU_REG CH7EN:1;
  967. __I NU_REG RESERVE6:1;
  968. __IO NU_REG CH7INV:1;
  969. __IO NU_REG CH7MOD:1;
  970. __I NU_REG RESERVE7:4;
  971. }NU_PWM_PCR47_Bits;

  972. typedef volatile union
  973. {
  974. NU_REG Regs;
  975. NU_PWM_PCR47_Bits Bits;
  976. }NU_PWM_PCR47_T;
  977. //----------------------------------------------------//
  978. #ifdef __NUC1xx_H__
  979. typedef enum
  980. {
  981. PWM_PBCR_BCn = 0
  982. }NU_PWM_PBCR_NUM;

  983. typedef volatile union
  984. {
  985. NU_REG Regs;
  986. PWM_PBCR_T Bits;
  987. }NU_PWM_PBCR_T;
  988. #endif
  989. //----------------------------------------------------//
  990. typedef enum
  991. {
  992. PWM_PIER_PWMIE0 = 0,//PWM定时器0中断使能
  993. PWM_PIER_PWMIE1 = 1,//PWM定时器1中断使能
  994. PWM_PIER_PWMIE2 = 2,//PWM定时器2中断使能
  995. PWM_PIER_PWMIE3 = 3, //PWM定时器3中断使能
  996. PWM_PIER_PWMIE4 = 0,//PWM定时器4中断使能
  997. PWM_PIER_PWMIE5 = 1,//PWM定时器5中断使能
  998. PWM_PIER_PWMIE6 = 2,//PWM定时器6中断使能
  999. PWM_PIER_PWMIE7 = 3 //PWM定时器7中断使能
  1000. }NU_PWM_PIER_NUM;

  1001. typedef enum
  1002. {
  1003. PWM_PIER03_PWMIE0 = 0,//PWM定时器0中断使能
  1004. PWM_PIER03_PWMIE1 = 1,//PWM定时器1中断使能
  1005. PWM_PIER03_PWMIE2 = 2,//PWM定时器2中断使能
  1006. PWM_PIER03_PWMIE3 = 3 //PWM定时器3中断使能
  1007. }NU_PWM_PIER03_NUM;

  1008. typedef volatile union
  1009. {
  1010. NU_REG Regs;
  1011. PWM_PIER_T Bits;
  1012. }NU_PWM_PIER_T;
  1013. //----------------------------------------------------//
  1014. typedef enum
  1015. {
  1016. PWM_PIER47_PWMIE4 = 0,//PWM定时器4中断使能
  1017. PWM_PIER47_PWMIE5 = 1,//PWM定时器5中断使能
  1018. PWM_PIER47_PWMIE6 = 2,//PWM定时器6中断使能
  1019. PWM_PIER47_PWMIE7 = 3 //PWM定时器7中断使能
  1020. }NU_PWM_PIER47_NUM;

  1021. typedef struct
  1022. {
  1023. __IO NU_REG PWMIE4:1;
  1024. __IO NU_REG PWMIE5:1;
  1025. __IO NU_REG PWMIE6:1;
  1026. __IO NU_REG PWMIE7:1;
  1027. __I NU_REG RESERVE:28;
  1028. }NU_PWM_PIER47_Bits;

  1029. typedef volatile union
  1030. {
  1031. NU_REG Regs;
  1032. NU_PWM_PIER47_Bits Bits;
  1033. }NU_PWM_PIER47_T;
  1034. //----------------------------------------------------//
  1035. typedef enum
  1036. {
  1037. PWM_PIIR_PWMIF0 = 0,//PWM定时器0中断标志
  1038. PWM_PIIR_PWMIF1 = 1,//PWM定时器1中断标志
  1039. PWM_PIIR_PWMIF2 = 2,//PWM定时器2中断标志
  1040. PWM_PIIR_PWMIF3 = 3,//PWM定时器3中断标志
  1041. PWM_PIIR_PWMIF4 = 0,//PWM定时器4中断标志
  1042. PWM_PIIR_PWMIF5 = 1,//PWM定时器5中断标志
  1043. PWM_PIIR_PWMIF6 = 2,//PWM定时器6中断标志
  1044. PWM_PIIR_PWMIF7 = 3 //PWM定时器7中断标志
  1045. }NU_PWM_PIIR_NUM;

  1046. typedef enum
  1047. {
  1048. PWM_PIIR03_PWMIF0 = 0,//PWM定时器0中断标志
  1049. PWM_PIIR03_PWMIF1 = 1,//PWM定时器1中断标志
  1050. PWM_PIIR03_PWMIF2 = 2,//PWM定时器2中断标志
  1051. PWM_PIIR03_PWMIF3 = 3 //PWM定时器3中断标志
  1052. }NU_PWM_PIIR03_NUM;

  1053. typedef volatile union
  1054. {
  1055. NU_REG Regs;
  1056. PWM_PIIR_T Bits;
  1057. }NU_PWM_PIIR_T;
  1058. //----------------------------------------------------//
  1059. typedef enum
  1060. {
  1061. PWM_PIIR47_PWMIF4 = 0,//PWM定时器4中断标志
  1062. PWM_PIIR47_PWMIF5 = 1,//PWM定时器5中断标志
  1063. PWM_PIIR47_PWMIF6 = 2,//PWM定时器6中断标志
  1064. PWM_PIIR47_PWMIF7 = 3 //PWM定时器7中断标志
  1065. }NU_PWM_PIIR47_NUM;

  1066. typedef struct
  1067. {
  1068. __IO NU_REG PWMIF5:1;
  1069. __IO NU_REG PWMIF6:1;
  1070. __IO NU_REG PWMIF7:1;
  1071. __IO NU_REG PWMIF8:1;
  1072. __I NU_REG RESERVE:28;
  1073. }NU_PWM_PIIR47_Bits;

  1074. typedef volatile union
  1075. {
  1076. NU_REG Regs;
  1077. NU_PWM_PIIR47_Bits Bits;
  1078. }NU_PWM_PIIR47_T;
  1079. //----------------------------------------------------//
  1080. typedef enum
  1081. {
  1082. PWM_CCR0_INV0 = 0,//通道0反向打开/关闭
  1083. PWM_CCR0_CRL_IE0 = 1,//通道0向上计数中断使能
  1084. PWM_CCR0_CFL_IE0 = 2,//通道0向下计数中断使能
  1085. PWM_CCR0_CAPCH0EN = 3,//捕捉器通道0传输使能/禁止
  1086. PWM_CCR0_CAPIF0 = 4,//捕捉器0中断标志
  1087. PWM_CCR0_CRLRI0 = 6,//捕捉器通道0传输使能/禁止
  1088. PWM_CCR0_CFLRI0 = 7,//CFLR0锁定方向标志位
  1089. PWM_CCR0_INV1 = 16,//通道1反向打开/关闭
  1090. PWM_CCR0_CRL_IE1 = 17,//通道1向上计数中断使能
  1091. PWM_CCR0_CFL_IE1 = 18,//通道1向下计数中断使能
  1092. PWM_CCR0_CAPCH1EN = 19,//捕捉器通道1传输使能/禁止
  1093. PWM_CCR0_CAPIF1 = 20,//捕捉器1中断标志
  1094. PWM_CCR0_CRLRI1 = 22,//CRLR1锁定方向标志位
  1095. PWM_CCR0_CFLRI1 = 23//CFLR1锁定方向标志位
  1096. }NU_PWM_CCR0_NUM;

  1097. typedef volatile union
  1098. {
  1099. NU_REG Regs;
  1100. PWM_CCR0_T Bits;
  1101. }NU_PWM_CCR0_T;
  1102. //----------------------------------------------------//
  1103. typedef enum
  1104. {
  1105. PWM_CCR4_INV4 = 0,//通道4反向打开/关闭
  1106. PWM_CCR4_CRL_IE4 = 1,//通道4向上计数中断使能
  1107. PWM_CCR4_CFL_IE4 = 2,//通道4向下计数中断使能
  1108. PWM_CCR4_CAPCH4EN = 3,//捕捉器通道4传输使能/禁止
  1109. PWM_CCR4_CAPIF4 = 4,//捕捉器4中断标志
  1110. PWM_CCR4_CRLRI4 = 6,//捕捉器通道4传输使能/禁止
  1111. PWM_CCR4_CFLRI4 = 7,//CFLR4锁定方向标志位
  1112. PWM_CCR4_INV5 = 16,//通道5反向打开/关闭
  1113. PWM_CCR4_CRL_IE5 = 17,//通道5向上计数中断使能
  1114. PWM_CCR4_CFL_IE5 = 18,//通道5向下计数中断使能
  1115. PWM_CCR4_CAPCH5EN = 19,//捕捉器通道1传输使能/禁止
  1116. PWM_CCR4_CAPIF5 = 20,//捕捉器5中断标志
  1117. PWM_CCR4_CRLRI5 = 22,//CRLR5锁定方向标志位
  1118. PWM_CCR4_CFLRI5 = 23//CFLR5锁定方向标志位
  1119. }NU_PWM_CCR4_NUM;

  1120. typedef struct
  1121. {
  1122. __IO NU_REG INV4:1;
  1123. __IO NU_REG CRL_IE4:1;
  1124. __IO NU_REG CFL_IE4:1;
  1125. __IO NU_REG CAPCH4EN:1;
  1126. __IO NU_REG CAPIF4:1;
  1127. __I NU_REG RESERVE4:1;
  1128. __IO NU_REG CRLRI4:1;
  1129. __IO NU_REG CFLRI4:1;
  1130. __I NU_REG RESERVE1:8;
  1131. __IO NU_REG INV5:1;
  1132. __IO NU_REG CRL_IE5:1;
  1133. __IO NU_REG CFL_IE5:1;
  1134. __IO NU_REG CAPCH5EN:1;
  1135. __IO NU_REG CAPIF5:1;
  1136. __I NU_REG RESERVE2:1;
  1137. __IO NU_REG CRLRI5:1;
  1138. __IO NU_REG CFLRI5:1;
  1139. __I NU_REG RESERVE3:8;
  1140. }NU_PWM_CCR4_Bits;

  1141. typedef volatile union
  1142. {
  1143. NU_REG Regs;
  1144. NU_PWM_CCR4_Bits Bits;
  1145. }NU_PWM_CCR4_T;
  1146. //----------------------------------------------------//
  1147. typedef enum
  1148. {
  1149. PWM_CCR2_INV2 = 0,//通道2反向打开/关闭
  1150. PWM_CCR2_CRL_IE2 = 1,//通道2向上计数中断使能
  1151. PWM_CCR2_CFL_IE2 = 2,//通道2向下计数中断使能
  1152. PWM_CCR2_CAPCH2EN = 3,//捕捉器通道2传输使能/禁止
  1153. PWM_CCR2_CAPIF2 = 4,//捕捉器2中断标志
  1154. PWM_CCR2_CRLRI2 = 6,//CRLR2锁定方向标志位
  1155. PWM_CCR2_CFLRI2 = 7,//CFLR2锁定方向标志位
  1156. PWM_CCR2_INV3 = 16,//通道3反向打开/关闭
  1157. PWM_CCR2_CRL_IE3 = 17,//通道3向上计数中断使能
  1158. PWM_CCR2_CFL_IE3 = 18,//通道3向下计数中断使能
  1159. PWM_CCR2_CAPCH3EN = 19,//捕捉器通道3传输使能/禁止
  1160. PWM_CCR2_CAPIF3 = 20,//捕捉器3中断标志
  1161. PWM_CCR2_CRLRI3 = 22,//CRLR3锁定方向标志位
  1162. PWM_CCR2_CFLRI3 = 23//CFLR3锁定方向标志位
  1163. }NU_PWM_CCR2_NUM;

  1164. typedef volatile union
  1165. {
  1166. NU_REG Regs;
  1167. PWM_CCR2_T Bits;
  1168. }NU_PWM_CCR2_T;
  1169. //----------------------------------------------------//
  1170. typedef enum
  1171. {
  1172. PWM_CCR6_INV6 = 0,//通道6反向打开/关闭
  1173. PWM_CCR6_CRL_IE6 = 1,//通道6向上计数中断使能
  1174. PWM_CCR6_CFL_IE6 = 2,//通道6向下计数中断使能
  1175. PWM_CCR6_CAPCH6EN = 3,//捕捉器通道6传输使能/禁止
  1176. PWM_CCR6_CAPIF6 = 4,//捕捉器6中断标志
  1177. PWM_CCR6_CRLRI6 = 6,//捕捉器通道6传输使能/禁止
  1178. PWM_CCR6_CFLRI6 = 7,//CFLR6锁定方向标志位
  1179. PWM_CCR6_INV7 = 16,//通道7反向打开/关闭
  1180. PWM_CCR6_CRL_IE7 = 17,//通道7向上计数中断使能
  1181. PWM_CCR6_CFL_IE7 = 18,//通道7向下计数中断使能
  1182. PWM_CCR6_CAPCH7EN = 19,//捕捉器通道7传输使能/禁止
  1183. PWM_CCR6_CAPIF7 = 20,//捕捉器7中断标志
  1184. PWM_CCR6_CRLRI7 = 22,//CRLR7锁定方向标志位
  1185. PWM_CCR6_CFLRI7 = 23//CFLR7锁定方向标志位
  1186. }NU_PWM_CCR6_NUM;

  1187. typedef struct
  1188. {
  1189. __IO NU_REG INV6:1;
  1190. __IO NU_REG CRL_IE6:1;
  1191. __IO NU_REG CFL_IE6:1;
  1192. __IO NU_REG CAPCH6EN:1;
  1193. __IO NU_REG CAPIF6:1;
  1194. __I NU_REG RESERVE4:1;
  1195. __IO NU_REG CRLRI6:1;
  1196. __IO NU_REG CFLRI6:1;
  1197. __I NU_REG RESERVE1:8;
  1198. __IO NU_REG INV7:1;
  1199. __IO NU_REG CRL_IE7:1;
  1200. __IO NU_REG CFL_IE7:1;
  1201. __IO NU_REG CAPCH7EN:1;
  1202. __IO NU_REG CAPIF7:1;
  1203. __I NU_REG RESERVE2:1;
  1204. __IO NU_REG CRLRI7:1;
  1205. __IO NU_REG CFLRI7:1;
  1206. __I NU_REG RESERVE3:8;
  1207. }NU_PWM_CCR6_Bits;

  1208. typedef volatile union
  1209. {
  1210. NU_REG Regs;
  1211. NU_PWM_CCR6_Bits Bits;
  1212. }NU_PWM_CCR6_T;
  1213. //----------------------------------------------------//
  1214. typedef enum
  1215. {
  1216. PWM_POE_PWM0 = 0,//PWM0输出使能寄存器
  1217. PWM_POE_PWM1 = 1,//PWM1输出使能寄存器
  1218. PWM_POE_PWM2 = 2,//PWM2输出使能寄存器
  1219. PWM_POE_PWM3 = 3,//PWM3输出使能寄存器
  1220. PWM_POE_PWM4 = 0,//PWM4输出使能寄存器
  1221. PWM_POE_PWM5 = 1,//PWM5输出使能寄存器
  1222. PWM_POE_PWM6 = 2,//PWM6输出使能寄存器
  1223. PWM_POE_PWM7 = 3 //PWM7输出使能寄存器
  1224. }NU_PWM_POE_NUM;

  1225. typedef enum
  1226. {
  1227. PWM_POE03_PWM0 = 0,//PWM0输出使能寄存器
  1228. PWM_POE03_PWM1 = 1,//PWM1输出使能寄存器
  1229. PWM_POE03_PWM2 = 2,//PWM2输出使能寄存器
  1230. PWM_POE03_PWM3 = 3 //PWM3输出使能寄存器
  1231. }NU_PWM_POE03_NUM;

  1232. typedef volatile union
  1233. {
  1234. NU_REG Regs;
  1235. PWM_POE_T Bits;
  1236. }NU_PWM_POE_T;
  1237. //----------------------------------------------------//
  1238. typedef enum
  1239. {
  1240. PWM_POE47_PWM4 = 0,//PWM4输出使能寄存器
  1241. PWM_POE47_PWM5 = 1,//PWM5输出使能寄存器
  1242. PWM_POE47_PWM6 = 2,//PWM6输出使能寄存器
  1243. PWM_POE47_PWM7 = 3 //PWM7输出使能寄存器
  1244. }NU_PWM_POE47_NUM;

  1245. typedef struct
  1246. {
  1247. __IO NU_REG PWM4:1;
  1248. __IO NU_REG PWM5:1;
  1249. __IO NU_REG PWM6:1;
  1250. __IO NU_REG PWM7:1;
  1251. __I NU_REG RESERVE:28;
  1252. }NU_PWM_POE47_Bits;

  1253. typedef volatile union
  1254. {
  1255. NU_REG Regs;
  1256. NU_PWM_POE47_Bits Bits;
  1257. }NU_PWM_POE47_T;
  1258. //----------------------------------------------------//
  1259. typedef enum
  1260. {
  1261. PWM_CAPENR_PWM0_PA12 = 0,//捕捉通道0从GPA12输入
  1262. PWM_CAPENR_PWM1_PA13 = 1,//捕捉通道1从GPA13输入
  1263. PWM_CAPENR_PWM2_PA14 = 2,//捕捉通道2从GPA14输入
  1264. PWM_CAPENR_PWM3_PA15 = 3,//捕捉通道3从GPA15输入
  1265. PWM_CAPENR_PWM4_PA11 = 0,//捕捉通道4从GPA11输入
  1266. PWM_CAPENR_PWM5_PA5 = 1,//捕捉通道5从GPA5输入
  1267. PWM_CAPENR_PWM6_PA0 = 2,//捕捉通道6从GPA0输入
  1268. PWM_CAPENR_PWM7_PA1 = 3 //捕捉通道7从GPA1输入
  1269. }NU_PWM_CAPENR_NUM;

  1270. typedef enum
  1271. {
  1272. PWM_CAPENR03_PWM0_PA12 = 0,//捕捉通道0从GPA12输入
  1273. PWM_CAPENR03_PWM1_PA13 = 1,//捕捉通道1从GPA13输入
  1274. PWM_CAPENR03_PWM2_PA14 = 2,//捕捉通道2从GPA14输入
  1275. PWM_CAPENR03_PWM3_PA15 = 3 //捕捉通道3从GPA15输入
  1276. }NU_PWM_CAPENR03_NUM;

  1277. typedef struct
  1278. {
  1279. __IO NU_REG PWM0_PA12:1;
  1280. __IO NU_REG PWM1_PA13:1;
  1281. __IO NU_REG PWM2_PA14:1;
  1282. __IO NU_REG PWM3_PA15:1;
  1283. __I NU_REG RESERVE:28;
  1284. }NU_PWM_CAPENR03_Bits;

  1285. typedef volatile union
  1286. {
  1287. NU_REG Regs;
  1288. NU_PWM_CAPENR03_Bits Bits;
  1289. }NU_PWM_CAPENR03_T;
  1290. //----------------------------------------------------//
  1291. typedef enum
  1292. {
  1293. PWM_CAPENR47_PWM4_PA11 = 0,//捕捉通道4从GPA11输入
  1294. PWM_CAPENR47_PWM5_PA5 = 1,//捕捉通道5从GPA5输入
  1295. PWM_CAPENR47_PWM6_PA0 = 2,//捕捉通道6从GPA0输入
  1296. PWM_CAPENR47_PWM7_PA1 = 3 //捕捉通道7从GPA1输入
  1297. }NU_PWM_CAPENR47_NUM;

  1298. typedef struct
  1299. {
  1300. __IO NU_REG PWM4_PA11:1;
  1301. __IO NU_REG PWM5_PA5:1;
  1302. __IO NU_REG PWM6_PA0:1;
  1303. __IO NU_REG PWM7_PA1:1;
  1304. __I NU_REG RESERVE:28;
  1305. }NU_PWM_CAPENR47_Bits;

  1306. typedef volatile union
  1307. {
  1308. NU_REG Regs;
  1309. NU_PWM_CAPENR47_Bits Bits;
  1310. }NU_PWM_CAPENR47_T;
  1311. //----------------------------------------------------//
  1312. typedef struct
  1313. {
  1314. union{
  1315. __IO NU_PWM_PPR_T PPR;//PWM0~3或PWM4~7预分频寄存器
  1316. __IO NU_PWM_PPR_T PPR03;//PWM0~3预分频寄存器
  1317. __IO NU_PWM_PPR47_T PPR47;//PWM4~7预分频寄存器
  1318. };
  1319. union{
  1320. __IO NU_PWM_CSR_T CSR;//PWM0~3或PWM4~7时钟选择寄存器
  1321. __IO NU_PWM_CSR_T CSR03;//PWM0~3时钟选择寄存器
  1322. __IO NU_PWM_CSR47_T CSR47;//PWM4~7时钟选择寄存器
  1323. };
  1324. union{
  1325. __IO NU_PWM_PCR_T PCR;//PWM0~3或PWM4~7控制寄存器
  1326. __IO NU_PWM_PCR_T PCR03;//PWM0~3控制寄存器
  1327. __IO NU_PWM_PCR47_T PCR47;//PWM4~7控制寄存器
  1328. };
  1329. union{
  1330. __IO NU_REG_BITs CNR0;//PWM0计数器寄存器
  1331. __IO NU_REG_BITs CNR4;//PWM4计数器寄存器
  1332. };
  1333. union{
  1334. __IO NU_REG_BITs CMR0;//PWM0比较寄存器
  1335. __IO NU_REG_BITs CMR4;//PWM4比较寄存器
  1336. };
  1337. union{
  1338. __IO NU_REG_BITs PDR0;//PWM0数据寄存器
  1339. __IO NU_REG_BITs PDR4;//PWM4数据寄存器
  1340. };
  1341. union{
  1342. __IO NU_REG_BITs CNR1;//PWM1计数器寄存器
  1343. __IO NU_REG_BITs CNR5;//PWM5计数器寄存器
  1344. };
  1345. union{
  1346. __IO NU_REG_BITs CMR1;//PWM1比较寄存器
  1347. __IO NU_REG_BITs CMR5;//PWM5比较寄存器
  1348. };
  1349. union{
  1350. __IO NU_REG_BITs PDR1;//PWM1数据寄存器
  1351. __IO NU_REG_BITs PDR5;//PWM5数据寄存器
  1352. };
  1353. union{
  1354. __IO NU_REG_BITs CNR2;//PWM2计数器寄存器
  1355. __IO NU_REG_BITs CNR6;//PWM6计数器寄存器
  1356. };
  1357. union{
  1358. __IO NU_REG_BITs CMR2;//PWM2比较寄存器
  1359. __IO NU_REG_BITs CMR6;//PWM6比较寄存器
  1360. };
  1361. union{
  1362. __IO NU_REG_BITs PDR2;//PWM2数据寄存器
  1363. __IO NU_REG_BITs PDR6;//PWM6数据寄存器
  1364. };
  1365. union{
  1366. __IO NU_REG_BITs CNR3;//PWM3计数器寄存器
  1367. __IO NU_REG_BITs CNR7;//PWM7计数器寄存器
  1368. };
  1369. union{
  1370. __IO NU_REG_BITs CMR3;//PWM3比较寄存器
  1371. __IO NU_REG_BITs CMR7;//PWM7比较寄存器
  1372. };
  1373. union{
  1374. __IO NU_REG_BITs PDR3;//PWM3数据寄存器
  1375. __IO NU_REG_BITs PDR7;//PWM7数据寄存器
  1376. };
  1377. #ifdef __NUC1xx_H__
  1378. __IO NU_PWM_PBCR_T PBCR;
  1379. #else
  1380. __I NU_REG RESERVE0;
  1381. #endif
  1382. union{
  1383. __IO NU_PWM_PIER_T PIER;//PWM0~3或PWM4~7中断使能寄存器
  1384. __IO NU_PWM_PIER_T PIER03;//PWM0~3中断使能寄存器
  1385. __IO NU_PWM_PIER47_T PIER47;//PWM4~7中断使能寄存器
  1386. };
  1387. union{
  1388. __IO NU_PWM_PIIR_T PIIR;//PWM0~3或PWM4~7中断标志寄存器
  1389. __IO NU_PWM_PIIR_T PIIR03;//PWM0~3中断标志寄存器
  1390. __IO NU_PWM_PIIR47_T PIIR47;//PWM4~7中断标志寄存器
  1391. __IO NU_PWM_PIIR_T PIFR;//PWM0~3或PWM4~7中断标志寄存器
  1392. __IO NU_PWM_PIIR_T PIFR03;//PWM0~3中断标志寄存器
  1393. __IO NU_PWM_PIIR47_T PIFR47;//PWM4~7中断标志寄存器
  1394. };
  1395. __I NU_REG RESERVE1[2];
  1396. union{
  1397. __IO NU_PWM_CCR0_T CCR0;//捕捉控制寄存器01
  1398. __IO NU_PWM_CCR4_T CCR4;//捕捉控制寄存器45
  1399. __IO NU_PWM_CCR0_T CCR1;//捕捉控制寄存器01
  1400. __IO NU_PWM_CCR4_T CCR5;//捕捉控制寄存器45
  1401. __IO NU_PWM_CCR0_T CCR01;//捕捉控制寄存器01
  1402. __IO NU_PWM_CCR4_T CCR45;//捕捉控制寄存器45
  1403. };
  1404. union{
  1405. __IO NU_PWM_CCR2_T CCR2;//捕捉控制寄存器23
  1406. __IO NU_PWM_CCR6_T CCR6;//捕捉控制寄存器67
  1407. __IO NU_PWM_CCR2_T CCR3;//捕捉控制寄存器23
  1408. __IO NU_PWM_CCR6_T CCR7;//捕捉控制寄存器67
  1409. __IO NU_PWM_CCR2_T CCR23;//捕捉控制寄存器23
  1410. __IO NU_PWM_CCR6_T CCR67;//捕捉控制寄存器67
  1411. };
  1412. union{
  1413. __IO NU_REG_BITs CRLR0;//捕捉上升沿锁存寄存器0
  1414. __IO NU_REG_BITs CRLR4;//捕捉上升沿锁存寄存器4
  1415. };
  1416. union{
  1417. __IO NU_REG_BITs CFLR0;//捕捉下降沿锁存寄存器0
  1418. __IO NU_REG_BITs CFLR4;//捕捉下降沿锁存寄存器4
  1419. };
  1420. union{
  1421. __IO NU_REG_BITs CRLR1;//捕捉上升沿锁存寄存器1
  1422. __IO NU_REG_BITs CRLR5;//捕捉上升沿锁存寄存器5
  1423. };
  1424. union{
  1425. __IO NU_REG_BITs CFLR1;//捕捉下降沿锁存寄存器1
  1426. __IO NU_REG_BITs CFLR5;//捕捉下降沿锁存寄存器5
  1427. };
  1428. union{
  1429. __IO NU_REG_BITs CRLR2;//捕捉上升沿锁存寄存器2
  1430. __IO NU_REG_BITs CRLR6;//捕捉上升沿锁存寄存器6
  1431. };
  1432. union{
  1433. __IO NU_REG_BITs CFLR2;//捕捉下降沿锁存寄存器2
  1434. __IO NU_REG_BITs CFLR6;//捕捉下降沿锁存寄存器6
  1435. };
  1436. union{
  1437. __IO NU_REG_BITs CRLR3;//捕捉上升沿锁存寄存器3
  1438. __IO NU_REG_BITs CRLR7;//捕捉上升沿锁存寄存器7
  1439. };
  1440. union{
  1441. __IO NU_REG_BITs CFLR3;//捕捉下降沿锁存寄存器3
  1442. __IO NU_REG_BITs CFLR7;//捕捉下降沿锁存寄存器7
  1443. };
  1444. union{
  1445. __IO NU_REG_BITs CAPENR;//捕捉输入使能寄存器
  1446. __IO NU_PWM_CAPENR03_T CAPENR03;//捕捉输入03使能寄存器
  1447. __IO NU_PWM_CAPENR47_T CAPENR47;//捕捉输入47使能寄存器
  1448. };
  1449. union{
  1450. __IO NU_PWM_POE_T POE;//PWM输出使能寄存器
  1451. __IO NU_PWM_POE_T POE03;//PWM输出03使能寄存器
  1452. __IO NU_PWM_POE47_T POE47;//PWM输出47使能寄存器
  1453. };
  1454. }NU_PWM_T;
  1455. //----------------------------------------------------//
  1456. #define PWM03s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM03s
  1457. #define PWM47s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM47s
  1458. //----------------------------------------------------//
  1459. #define PWM0s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM0s
  1460. #define PWM1s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM1s
  1461. #define PWM2s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM2s
  1462. #define PWM3s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM3s
  1463. #define PWM4s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM4s
  1464. #define PWM5s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM5s
  1465. #define PWM6s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM6s
  1466. #define PWM7s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM7s
  1467. //----------------------------------------------------//
  1468. #define PWMx(x) ((NU_PWM_T *) PWMA_BASE + ((x >> 4) * 0x100000))
  1469. //----------------------------------------------------//
  1470. typedef enum
  1471. {
  1472. UART_IER_RDA_IEN = 0,//可接收数据中断使能
  1473. UART_IER_THRE_IEN = 1,//发送保持寄存器空中断使能
  1474. UART_IER_RLS_IEN = 2,//线上接收中断状态使能
  1475. UART_IER_MODEM_IEN = 3,//Modem中断状态使能
  1476. UART_IER_RTO_IEN = 4,//Rx Time out 中断使能
  1477. UART_IER_BUF_ERR_IEN = 5,//Buffer Error 中断使能
  1478. UART_IER_WAKE_IEN = 6,//唤醒CPU功能使能
  1479. UART_IER_LIN_RX_BRK_IEN = 8,//LIN RX Break Field Detected 中断使能
  1480. UART_IER_TIME_OUT_EN = 11,//Time-Out 计数器使能
  1481. UART_IER_AUTO_RTS_EN = 12,//RTS自动流控制使
  1482. UART_IER_AUTO_CTS_EN = 13,//CTS自动流控制使能
  1483. UART_IER_DMA_TX_EN = 14,//Tx DMA使能
  1484. UART_IER_DMA_RX_EN = 15//Rx DMA使能
  1485. }NU_UART_IER_ENUM;

  1486. typedef volatile union
  1487. {
  1488. NU_REG Regs;
  1489. UART_IER_T Bits;
  1490. }NU_UART_IER_T;
  1491. //----------------------------------------------------//
  1492. typedef enum
  1493. {
  1494. UART_FCR_RFR = 1,//Rx软件复位
  1495. UART_FCR_TFR = 2,//Tx软件复位
  1496. UART_FCR_RFITL = 4,//Rx FIFO中断(INT_RDA)触发级别
  1497. UART_FCR_RX_DIS = 8,//RTS触发自动流程控制使能
  1498. UART_FCR_RTS_TRI_LEVEL = 16,//RTS触发自动流程控制
  1499. }NU_UART_FCR_ENUM;

  1500. typedef volatile union
  1501. {
  1502. NU_REG Regs;
  1503. UART_FCR_T Bits;
  1504. }NU_UART_FCR_T;
  1505. //----------------------------------------------------//
  1506. typedef enum
  1507. {
  1508. UART_LCR_WLS = 0,//字长度选择
  1509. UART_LCR_NSB = 2,//停止位数目
  1510. UART_LCR_PBE = 3,//奇偶使能位
  1511. UART_LCR_EPE = 4,//Even 奇偶使能
  1512. UART_LCR_SPE = 5,//Stick 奇偶使能
  1513. UART_LCR_BCB = 6 //钳制控制位
  1514. }NU_UART_LCR_ENUM;

  1515. typedef volatile union
  1516. {
  1517. NU_REG Regs;
  1518. UART_LCR_T Bits;
  1519. }NU_UART_LCR_T;
  1520. //----------------------------------------------------//
  1521. typedef enum
  1522. {
  1523. UART_MCR_RTS = 1,//RTS (Request-To-Send) 信号
  1524. UART_MCR_LBME = 9,//
  1525. UART_MCR_LEV_RTS = 13,//RTS 触发级别
  1526. UART_MCR_RTS_ST = 0,//RTS Pin 状态
  1527. }NU_UART_MCR_ENUM;

  1528. typedef volatile union
  1529. {
  1530. NU_REG Regs;
  1531. UART_MCR_T Bits;
  1532. }NU_UART_MCR_T;
  1533. //----------------------------------------------------//
  1534. typedef enum
  1535. {
  1536. UART_MSR_DCTSF = 0,//侦测 CTS 状态改变标志位
  1537. UART_MSR_CTS_ST = 4,//CTS Pin 状况
  1538. UART_MSR_LEV_CTS = 8//CTS 触发级别
  1539. }NU_UART_MSR_ENUM;

  1540. typedef volatile union
  1541. {
  1542. NU_REG Regs;
  1543. UART_MSR_T Bits;
  1544. }NU_UART_MSR_T;
  1545. //----------------------------------------------------//
  1546. typedef enum
  1547. {
  1548. UART_FSR_RX_OVER_IF = 0,//Rx overflow Error IF (只读)
  1549. UART_FSR_RS485_ADD_DETF = 3,//
  1550. UART_FSR_PEF = 4,//Parity Error 标志位
  1551. UART_FSR_FEF = 5,//Framing Error 标志位
  1552. UART_FSR_BIF = 6,//钳制中断标志位
  1553. UART_FSR_RX_POINTER = 8,//Rx FIFO pointer (只读)
  1554. UART_FSR_RX_EMPTY = 14,//接收FIFO 为空(只读)
  1555. UART_FSR_RX_FULL = 15,//接收 FIFO Full (只读)
  1556. UART_FSR_TX_POINTER = 16,//TX FIFO Pointer (只读)
  1557. UART_FSR_TX_EMPTY = 22,//发送FIFO 为空(只读)
  1558. UART_FSR_TX_FULL = 23,//全部 FIFO 传输 (只读)
  1559. UART_FSR_TX_OVER_IF = 24,//Tx 溢出 Error 中断标志位 (只读)
  1560. UART_FSR_TE_FLAG = 28//传输清空标志位 (只读)
  1561. }NU_UART_FSR_ENUM;

  1562. typedef volatile union
  1563. {
  1564. NU_REG Regs;
  1565. UART_FSR_T Bits;
  1566. }NU_UART_FSR_T;
  1567. //----------------------------------------------------//
  1568. typedef enum
  1569. {
  1570. UART_ISR_RDA_IF = 0,//Receive Data Available中断标志位 (只读)
  1571. UART_ISR_THRE_IF = 1,//Transmit Holding 寄存器 清空中断标志位(只读)
  1572. UART_ISR_RLS_IF = 2,//Receive Line中断标志位 (只读)
  1573. UART_ISR_MODEM_IF = 3,//MODEM 中断标志位 (只读)
  1574. UART_ISR_TOUT_IF = 4,//Time Out 中断标志位 (只读)
  1575. UART_ISR_BUF_ERR_IF = 5,//Buffer Error 中断标志位 (只读)
  1576. UART_ISR_LIN_RX_BREAK_IF = 7,//LIN Bus Rx Break Field 侦测标志位
  1577. UART_ISR_RDA_INT = 8,//接收数据可用中断状态指示中断控制器(INT_RDA)
  1578. UART_ISR_THRE_INT = 9,//发送保持寄存器 清空中断状态指示中断控制器(INT_THRE)
  1579. UART_ISR_RLS_INT = 10,//线上数据接收中断状态指示中断控制器(INT_RLS)
  1580. UART_ISR_MODEM_INT = 11,//MODEM 中断状态指示中断控制器(INT_MOS)
  1581. UART_ISR_TOUT_INT = 12,//Time Out 中断状态指示中断控制器(INT_Tout)
  1582. UART_ISR_BUF_ERR_INT = 13,//Buffer Error 中断状态指示中断控制器(INT_Buf_err)
  1583. UART_ISR_LIN_Rx_Break_INT = 15,//LIN Bus Rx Break Field 中断状态指示中断控制器
  1584. UART_ISR_HW_RLS_IF = 18,//DMA 模式, 接收 Line 状态标志位 (只读)
  1585. UART_ISR_HW_MODEM_IF = 19,//DMA 模式, MODEM Interrupt Flag (只读)
  1586. UART_ISR_HW_TOUT_IF = 20,//DMA 模式, Time out Interrupt Flag (只读)
  1587. UART_ISR_HW_BUF_ERR_IF = 21,//DMA 模式, Buffer Error Interrupt Flag (只读)
  1588. UART_ISR_HW_LIN_RX_BREAK_IF = 23,//DMA模式, LIN Bus Rx Break Field Detect 中断标志位
  1589. UART_ISR_HW_RLS_INT = 26,//DMA 模式, 接收 Line 中断状态指示中断控制器(INT_RLS)
  1590. UART_ISR_HW_MODEM_INT = 27,//DMA模式, MODEM 状态指示中断控制器 (INT_MOS)
  1591. UART_ISR_HW_TOUT_INT = 28,//DMA 模式, Time Out 状态指示中断控制器 (INT_Tout)
  1592. UART_ISR_HW_BUF_ERR_INT = 29,//DMA 模式, Buffer Error 侦测指示中断控制器 (INT_Buf_err)
  1593. UART_ISR_HW_LIN_RX_BREAK_INT = 31//DMA 模式, LIN Bus Rx Break Field 侦测指示中断控制器
  1594. }NU_UART_ISR_ENUM;

  1595. typedef volatile union
  1596. {
  1597. NU_REG Regs;
  1598. UART_ISR_T Bits;
  1599. }NU_UART_ISR_T;
  1600. //----------------------------------------------------//
  1601. typedef enum
  1602. {
  1603. UART_TOR_TOIC = 0,//时间溢出中断比较器
  1604. UART_TOR_DLY = 8,//
  1605. }NU_UART_TOR_ENUM;

  1606. typedef volatile union
  1607. {
  1608. NU_REG Regs;
  1609. UART_TOR_T Bits;
  1610. }NU_UART_TOR_T;
  1611. //----------------------------------------------------//
  1612. typedef enum
  1613. {
  1614. UART_BAUD_BRD = 0,//波特率分频16位
  1615. UART_BAUD_DIVIDER_X = 24,//分频 X
  1616. UART_BAUD_DIV_X_ONE = 28,//Divider X equal 1
  1617. UART_BAUD_DIV_X_EN = 29,//分频 X 使能
  1618. }NU_UART_BAUD_ENUM;

  1619. typedef volatile union
  1620. {
  1621. NU_REG Regs;
  1622. UART_BAUD_T Bits;
  1623. }NU_UART_BAUD_T;
  1624. //----------------------------------------------------//
  1625. typedef enum
  1626. {
  1627. UART_IRCR_TX_SELECT = 1,//Tx_SELECT(1: 使能IrDA 发送,0: 使能 IrDA 接收)
  1628. UART_IRCR_INV_TX = 5,//INV_Tx(1= Tx 输出信号反转,0=无反转)
  1629. UART_IRCR_INV_RX = 6,//INV_Rx(1= Rx 输入信号反转,0= 无反转)
  1630. }NU_UART_IRCR_ENUM;

  1631. typedef volatile union
  1632. {
  1633. NU_REG Regs;
  1634. UART_IRCR_T Bits;
  1635. }NU_UART_IRCR_T;
  1636. //----------------------------------------------------//
  1637. typedef enum
  1638. {
  1639. UART_ALTCON_LIN_BKFL = 0,//UART LIN Break Field 长度
  1640. UART_ALTCON_LIN_RX_EN = 6,//LIN RX 使能
  1641. UART_ALTCON_LIN_TX_EN = 7,//LIN TX 钳制模式使能
  1642. UART_ALTCON_RS485_NMM = 8,//
  1643. UART_ALTCON_RS485_AAD = 9,//
  1644. UART_ALTCON_RS485_AUD = 10,//
  1645. UART_ALTCON_RS485_ADD_EN = 15,//
  1646. UART_ALTCON_ADDR_MATCH = 24,//
  1647. }NU_UART_ALTCON_ENUM;

  1648. typedef volatile union
  1649. {
  1650. NU_REG Regs;
  1651. UART_ALTCON_T Bits;
  1652. }NU_UART_ALTCON_T;
  1653. //----------------------------------------------------//
  1654. typedef enum
  1655. {
  1656. UART_FUNSEL_FUN_SEL = 0,//位1(IrDA_EN---IrDA 功能使能) 位0(LIN_EN---LIN 功能使能)
  1657. }NU_UART_FUNSEL_ENUM;

  1658. typedef volatile union
  1659. {
  1660. NU_REG Regs;
  1661. UART_FUNSEL_T Bits;//很臭的一个位域
  1662. }NU_UART_FUNSEL_T;
  1663. //----------------------------------------------------//
  1664. typedef struct
  1665. {
  1666. union{
  1667. __IO NU_REG_BITs DATA;//接收发送数据
  1668. __I NU_REG_BITs RBR;//接收数据缓存寄存器
  1669. __O NU_REG_BITs THR;//发送保持寄存器
  1670. };
  1671. __IO NU_UART_IER_T IER;//中断使能寄存器
  1672. __IO NU_UART_FCR_T FCR;//FIFO控制寄存器
  1673. __IO NU_UART_LCR_T LCR;//Line控制寄存器
  1674. __IO NU_UART_MCR_T MCR;//Modem控制寄存器
  1675. __IO NU_UART_MSR_T MSR;//Modem状态寄存器
  1676. __IO NU_UART_FSR_T FSR;//FIFO状态寄存器
  1677. __IO NU_UART_ISR_T ISR;//中断状态寄存器
  1678. __IO NU_UART_TOR_T TOR;//定时溢出寄存器
  1679. __IO NU_UART_BAUD_T BAUD;//波特率分频寄存器
  1680. __IO NU_UART_IRCR_T IRCR;//IrDA控制寄存器
  1681. __IO NU_UART_ALTCON_T ALTCON;//LIN Break失败计数寄存器
  1682. __IO NU_UART_FUNSEL_T FUNSEL;//功能选择寄存器
  1683. }NU_UART_T;
  1684. //----------------------------------------------------//
  1685. #define UART0s (*((NU_UART_T *) UART0_BASE))//定位全局结构变量UART0s
  1686. #define UART1s (*((NU_UART_T *) UART1_BASE))//定位全局结构变量UART0s
  1687. #define UART2s (*((NU_UART_T *) UART2_BASE))//定位全局结构变量UART0s
  1688. #define UART3s (*((NU_UART_T *) UART3_BASE))//定位全局结构变量UART0s
  1689. //----------------------------------------------------//
  1690. #define UARTx(x) ((NU_UART_T *) UART0_BASE + ((x & 1) * 0x100000) + ((x >> 1) * 0x104000))
  1691. #define Ux(x) ((NU_UART_T *) UART0_BASE + ((x & 1) * 0x100000) + ((x >> 1) * 0x104000))
  1692. //----------------------------------------------------//
  1693. typedef enum
  1694. {
  1695. ADC_ADDR_RSLT = 0,//A/D转换结果
  1696. ADC_ADDR_OVERRUN = 16,//结束运行标志位
  1697. ADC_ADDR_VALID = 17//有效标志位
  1698. }NU_ADC_ADDR_ENUM;

  1699. typedef volatile union
  1700. {
  1701. NU_REG Regs;
  1702. ADC_ADDR_T Bits;
  1703. }NU_ADC_ADDR_T;
  1704. //----------------------------------------------------//
  1705. typedef enum
  1706. {
  1707. ADC_ADCR_ADEN = 0,//A/D转换使能
  1708. ADC_ADCR_ADIE = 1,//A/D中断使能
  1709. ADC_ADCR_ADMD = 2,//A/D转换操作模式
  1710. ADC_ADCR_TRGS = 4,//硬件触发源
  1711. ADC_ADCR_TRGCOND = 6,//外部触发条件
  1712. ADC_ADCR_TRGEN = 8,//外部触发使能
  1713. ADC_ADCR_PTEN = 9,//PDMA 传送使能
  1714. ADC_ADCR_DIFFEN = 10,//A/D差分输入模式使能
  1715. ADC_ADCR_ADST = 11,//A/D转换开始
  1716. ADC_ADCR_DMOF = 31
  1717. }NU_ADC_ADCR_ENUM;

  1718. typedef volatile union
  1719. {
  1720. NU_REG Regs;
  1721. ADC_ADCR_T Bits;
  1722. }NU_ADC_ADCR_T;
  1723. //----------------------------------------------------//
  1724. typedef enum
  1725. {
  1726. ADC_ADCHER_CHEN0 = 0,//模拟输入通道0
  1727. ADC_ADCHER_CHEN1 = 1,//模拟输入通道1
  1728. ADC_ADCHER_CHEN2 = 2,//模拟输入通道2
  1729. ADC_ADCHER_CHEN3 = 3,//模拟输入通道3
  1730. ADC_ADCHER_CHEN4 = 4,//模拟输入通道4
  1731. ADC_ADCHER_CHEN5 = 5,//模拟输入通道5
  1732. ADC_ADCHER_CHEN6 = 6,//模拟输入通道6
  1733. ADC_ADCHER_CHEN7 = 7,//模拟输入通道7
  1734. ADC_ADCHER_PRESEL = 8 //模拟输入通道7选择位
  1735. //00:模拟输入通道7 01:Bandgap(VBG)模拟输入
  1736. //10:VTEMP模拟输入 11:模拟地
  1737. }NU_ADC_ADCHER_ENUM;

  1738. typedef volatile union
  1739. {
  1740. NU_REG Regs;
  1741. ADC_ADCHER_T Bits;
  1742. }NU_ADC_ADCHER_T;
  1743. //----------------------------------------------------//
  1744. typedef enum
  1745. {
  1746. ADC_ADCMPR_CMPEN = 0, //比较使能
  1747. ADC_ADCMPR_CMPIE = 1, //比较中断使能
  1748. ADC_ADCMPR_CMPCOND = 2, //比较条件
  1749. ADC_ADCMPR_CMPCH = 3, //Compare通道选择(000=选择通道0转换结果,111=选择通道7转换结果)
  1750. ADC_ADCMPR_CMPMATCNT = 8, //比较匹配值
  1751. ADC_ADCMPR_CMPD = 16 //比较数值
  1752. }NU_ADC_ADCMPR_ENUM;

  1753. typedef volatile union
  1754. {
  1755. NU_REG Regs;
  1756. ADC_ADCMPR_T Bits;
  1757. }NU_ADC_ADCMPR_T;
  1758. //----------------------------------------------------//
  1759. typedef enum
  1760. {
  1761. ADC_ADSR_ADF = 0,//A/D转换结束标志位
  1762. ADC_ADSR_CMPF0 = 1,//比较标志位
  1763. ADC_ADSR_CMPF1 = 2,//较标志位
  1764. ADC_ADSR_BUSY = 3,//BUSY/IDLE
  1765. ADC_ADSR_CHANNEL = 4,//当前转换通道
  1766. ADC_ADSR_VALID = 8,//数据有效标志位
  1767. ADC_ADSR_OVERRUN = 16//结束运行标志位
  1768. }NU_ADC_ADSR_ENUM;

  1769. typedef volatile union
  1770. {
  1771. NU_REG Regs;
  1772. ADC_ADSR_T Bits;
  1773. }NU_ADC_ADSR_T;
  1774. //----------------------------------------------------//
  1775. typedef enum
  1776. {
  1777. ADC_ADCALR_CALEN = 0,//自身校准功能使能
  1778. ADC_ADCALR_CALDONE = 1 //校准完成标志(只读)
  1779. }NU_ADC_ADCALR_ENUM;

  1780. typedef volatile union
  1781. {
  1782. NU_REG Regs;
  1783. ADC_ADCALR_T Bits;
  1784. }NU_ADC_ADCALR_T;
  1785. //----------------------------------------------------//
  1786. #ifdef __NUC1xx_H__
  1787. typedef enum
  1788. {
  1789. ADC_ADPDMA_AD_PDMA = 0 //ADC PDMA当前数据传输寄存器
  1790. }NU_ADC_ADPDMA_ENUM;

  1791. typedef volatile union
  1792. {
  1793. NU_REG Regs;
  1794. ADC_ADPDMA_T Bits;
  1795. }NU_ADC_ADPDMA_T;
  1796. #endif
  1797. //----------------------------------------------------//
  1798. typedef struct
  1799. {
  1800. union{
  1801. __I NU_ADC_ADDR_T ADDR[8];//A/D数据寄存器0~7
  1802. struct{
  1803. __I NU_ADC_ADDR_T ADDR0;//A/D数据寄存器0
  1804. __I NU_ADC_ADDR_T ADDR1;//A/D数据寄存器1
  1805. __I NU_ADC_ADDR_T ADDR2;//A/D数据寄存器2
  1806. __I NU_ADC_ADDR_T ADDR3;//A/D数据寄存器3
  1807. __I NU_ADC_ADDR_T ADDR4;//A/D数据寄存器4
  1808. __I NU_ADC_ADDR_T ADDR5;//A/D数据寄存器5
  1809. __I NU_ADC_ADDR_T ADDR6;//A/D数据寄存器6
  1810. __I NU_ADC_ADDR_T ADDR7;//A/D数据寄存器7
  1811. };
  1812. };
  1813. __IO NU_ADC_ADCR_T ADCR;//ADC控制寄存器
  1814. __IO NU_ADC_ADCHER_T ADCHER;//A/D 通道使能
  1815. union{
  1816. __IO NU_ADC_ADCMPR_T ADCMPR[2];//A/D比较寄存器0,1
  1817. struct{
  1818. __IO NU_ADC_ADCMPR_T ADCMPR0;//A/D比较寄存器0
  1819. __IO NU_ADC_ADCMPR_T ADCMPR1;//A/D比较寄存器1
  1820. };
  1821. };
  1822. __IO NU_ADC_ADSR_T ADSR;//ADC状态寄存器
  1823. __IO NU_ADC_ADCALR_T ADCALR;//A/D校准寄存器
  1824. __I NU_REG RESERVE0;
  1825. __I NU_REG RESERVE1;
  1826. #ifdef __NUC1xx_H__
  1827. __IO NU_ADC_ADPDMA_T ADPDMA;//A/D PDMA当前数据传输寄存器
  1828. #else
  1829. __I NU_REG RESERVE2;
  1830. #endif
  1831. }NU_ADC_T;
  1832. //----------------------------------------------------//
  1833. #define ADCs (*((NU_ADC_T *) ADC_BASE))//定位全局结构变量ADCs
  1834. //----------------------------------------------------//
  1835. #define ADCx ((NU_ADC_T *) ADC_BASE)
  1836. //----------------------------------------------------//
  1837. typedef enum
  1838. {
  1839. SYSCLK_PWRCON_XTL12M_EN = 0,//外部12MHz晶振控制
  1840. SYSCLK_PWRCON_XTL32K_EN = 1,//外部32.768KHz晶振控制
  1841. SYSCLK_PWRCON_OSC22M_EN = 2,//内部22MHz振荡器控制
  1842. SYSCLK_PWRCON_OSC10K_EN = 3,//内部10KHz振荡器控制
  1843. SYSCLK_PWRCON_PD_WU_DLY = 4,//使能唤醒延时计数器
  1844. SYSCLK_PWRCON_PD_WU_INT_EN = 5,//掉电模式唤醒的中断使能
  1845. SYSCLK_PWRCON_PD_WU_STS = 6,//芯片掉电唤醒状态标志
  1846. SYSCLK_PWRCON_PWR_DOWN = 7,//激活或使能系统掉电模式
  1847. SYSCLK_PWRCON_PD_WAIT_CPU = 8 //控制进入掉电模式的条件
  1848. }NU_SYSCLK_PWRCON_ENUM;

  1849. typedef volatile union
  1850. {
  1851. NU_REG Regs;
  1852. SYSCLK_PWRCON_T Bits;
  1853. }NU_SYSCLK_PWRCON_T;
  1854. //----------------------------------------------------//
  1855. typedef enum
  1856. {
  1857. SYSCLK_AHBCLK_PDMA_EN = 1,//PDMA控制器时钟使能控制
  1858. SYSCLK_AHBCLK_ISP_EN = 2,//Flash ISP控制器时钟使能控制
  1859. SYSCLK_AHBCLK_EBI_EN = 3 //
  1860. }NU_SYSCLK_AHBCLK_ENUM;

  1861. typedef volatile union
  1862. {
  1863. NU_REG Regs;
  1864. SYSCLK_AHBCLK_T Bits;
  1865. }NU_SYSCLK_AHBCLK_T;
  1866. //----------------------------------------------------//
  1867. typedef enum
  1868. {
  1869. SYSCLK_APBCLK_WDT_EN = 0,//Watch Dog时钟使能
  1870. SYSCLK_APBCLK_RTC_EN = 1,//Real-Time-Clock APB接口时钟控制
  1871. SYSCLK_APBCLK_TMR0_EN = 2,//Timer0时钟使能控制
  1872. SYSCLK_APBCLK_TMR1_EN = 3,//Timer1时钟使能控制
  1873. SYSCLK_APBCLK_TMR2_EN = 4,//Timer2时钟使能控制
  1874. SYSCLK_APBCLK_TMR3_EN = 5,//Timer3时钟使能控制
  1875. SYSCLK_APBCLK_FDIV_EN = 6,//分频器输出时钟使能控制
  1876. #ifdef __NUC1xx_H__
  1877. SYSCLK_APBCLK_I2C0_EN = 8,//I2C0时钟使能控制
  1878. SYSCLK_APBCLK_I2C1_EN = 9,//I2C1时钟使能控制
  1879. #else
  1880. SYSCLK_APBCLK_I2C_EN = 8,//I2C时钟使能控制
  1881. #endif
  1882. SYSCLK_APBCLK_SPI0_EN = 12,//SPI0时钟使能控制
  1883. SYSCLK_APBCLK_SPI1_EN = 13,//SPI1时钟使能控制
  1884. SYSCLK_APBCLK_SPI2_EN = 14,//SPI2时钟使能控制
  1885. SYSCLK_APBCLK_SPI3_EN = 15,//SPI3时钟使能控制
  1886. SYSCLK_APBCLK_UART0_EN = 16,//UART0时钟使能控制
  1887. SYSCLK_APBCLK_UART1_EN = 17,//UART1时钟使能控制
  1888. SYSCLK_APBCLK_UART2_EN = 18,//UART2时钟使能控制
  1889. SYSCLK_APBCLK_PWM01_EN = 20,//PWM_01时钟使能控制
  1890. SYSCLK_APBCLK_PWM23_EN = 21,//PWM_23时钟使能控制
  1891. SYSCLK_APBCLK_PWM45_EN = 22,//PWM_45时钟使能控制
  1892. SYSCLK_APBCLK_PWM67_EN = 23,//PWM_67时钟使能控制
  1893. SYSCLK_APBCLK_CAN0_EN = 24,//使能CAN线控制器0时钟控制
  1894. SYSCLK_APBCLK_USBD_EN = 27,//USB FS设备控制器时钟使能控制
  1895. SYSCLK_APBCLK_ADC_EN = 28,//使能ADC时钟控制
  1896. SYSCLK_APBCLK_I2S_EN = 29,//I2S时钟使能控制
  1897. SYSCLK_APBCLK_ACMP_EN = 30,//模拟比较器时钟使能控制
  1898. SYSCLK_APBCLK_PS2_EN = 31//PS2时钟使能控制
  1899. }NU_SYSCLK_APBCLK_ENUM;

  1900. typedef volatile union
  1901. {
  1902. NU_REG Regs;
  1903. SYSCLK_APBCLK_T Bits;
  1904. }NU_SYSCLK_APBCLK_T;
  1905. //----------------------------------------------------//
  1906. typedef enum
  1907. {
  1908. SYSCLK_CLKSTATUS_XTL12M_STB = 0,
  1909. SYSCLK_CLKSTATUS_XTL32K_STB = 1,
  1910. SYSCLK_CLKSTATUS_PLL_STB = 2,
  1911. SYSCLK_CLKSTATUS_OSC10K_STB = 3,
  1912. SYSCLK_CLKSTATUS_OSC22M_STB = 4,
  1913. SYSCLK_CLKSTATUS_RESERVE0 = 5,
  1914. SYSCLK_CLKSTATUS_CLK_SW_FAIL = 7
  1915. }NU_SYSCLK_CLKSTATUS_ENUM;

  1916. typedef volatile union
  1917. {
  1918. NU_REG Regs;
  1919. SYSCLK_CLKSTATUS_T Bits;
  1920. }NU_SYSCLK_CLKSTATUS_T;
  1921. //----------------------------------------------------//
  1922. typedef enum
  1923. {
  1924. SYSCLK_CLKSEL0_HCLK_S = 0,
  1925. SYSCLK_CLKSEL0_STCLK_S = 3
  1926. }NU_SYSCLK_CLKSEL0_ENUM;

  1927. typedef volatile union
  1928. {
  1929. NU_REG Regs;
  1930. SYSCLK_CLKSEL0_T Bits;
  1931. }NU_SYSCLK_CLKSEL0_T;
  1932. //----------------------------------------------------//
  1933. typedef enum
  1934. {
  1935. SYSCLK_CLKSEL1_WDT_S = 0,//WDGCLK时钟源选择
  1936. SYSCLK_CLKSEL1_ADC_S = 1,//ADC时钟源选择
  1937. SYSCLK_CLKSEL1_TMR0_S = 8,//TIMER0时钟源选择
  1938. SYSCLK_CLKSEL1_TMR1_S = 12,//TIMER1时钟源选择
  1939. SYSCLK_CLKSEL1_TMR2_S = 16,//TIMER2时钟源选择
  1940. SYSCLK_CLKSEL1_TMR3_S = 20,//TIMER3时钟源选择
  1941. SYSCLK_CLKSEL1_UART_S = 24,//UART时钟源选择
  1942. SYSCLK_CLKSEL1_CAN_S = 26,//CAN时钟源选择
  1943. SYSCLK_CLKSEL1_PWM01_S = 28,//PWM1与PWM0的时钟源选择
  1944. SYSCLK_CLKSEL1_PWM23_S = 30 //PWM3与PWM2的时钟源选择.
  1945. }NU_SYSCLK_CLKSEL1_ENUM;

  1946. typedef volatile union
  1947. {
  1948. NU_REG Regs;
  1949. SYSCLK_CLKSEL1_T Bits;
  1950. }NU_SYSCLK_CLKSEL1_T;
  1951. //----------------------------------------------------//
  1952. typedef enum
  1953. {
  1954. SYSCLK_CLKDIV_HCLK_N = 0,//HCLK时钟频率=(HCLK时钟源频率)/(HCLK_N+1)
  1955. SYSCLK_CLKDIV_USB_N = 4,//USB时钟频率=(PLL频率)/(USB_N+1)
  1956. SYSCLK_CLKDIV_UART_N = 8,//UART时钟频率=(UART时钟源频率)/(UART_N+1)
  1957. SYSCLK_CLKDIV_CAN_N = 12,//APU时钟频率=(CAN时钟源频率)/(CAN_N+1)
  1958. SYSCLK_CLKDIV_ADC_N = 16,//ADC时钟频率=ADC时钟源频率/(ADC_N+1)
  1959. SYSCLK_CLKDIV_CAN_N_EXT = 24//
  1960. }NU_SYSCLK_CLKDIV_ENUM;

  1961. typedef volatile union
  1962. {
  1963. NU_REG Regs;
  1964. SYSCLK_CLKDIV_T Bits;
  1965. }NU_SYSCLK_CLKDIV_T;
  1966. //----------------------------------------------------//
  1967. typedef enum
  1968. {
  1969. SYSCLK_CLKSEL2_I2S_S = 0,//I2S时钟源选择
  1970. SYSCLK_CLKSEL2_FRQDIV_S = 2,//时钟分频器时钟源选择
  1971. SYSCLK_CLKSEL2_PWM45_S = 4,//PWM4与PWM5的时钟源选择
  1972. SYSCLK_CLKSEL2_PWM67_S = 6 //PWM6与PWM7的时钟源选择
  1973. }NU_SYSCLK_CLKSEL2_ENUM;

  1974. typedef volatile union
  1975. {
  1976. NU_REG Regs;
  1977. SYSCLK_CLKSEL2_T Bits;
  1978. }NU_SYSCLK_CLKSEL2_T;
  1979. //----------------------------------------------------//
  1980. typedef enum
  1981. {
  1982. SYSCLK_PLLCON_FB_DV = 0,//PLL反馈分频控制引脚
  1983. SYSCLK_PLLCON_IN_DV = 9,//PLL输入分频控制引脚
  1984. SYSCLK_PLLCON_OUT_DV = 14,//PLL输出分频控制引脚
  1985. SYSCLK_PLLCON_PD = 16,//掉电模式
  1986. SYSCLK_PLLCON_BP = 17,//PLL旁路控制
  1987. SYSCLK_PLLCON_OE = 18,//PLL OE(FOUT enable)引脚控制
  1988. SYSCLK_PLLCON_PLL_SRC = 19 //PLL时钟源选择
  1989. }NU_SYSCLK_PLLCON_ENUM;

  1990. typedef volatile union
  1991. {
  1992. NU_REG Regs;
  1993. SYSCLK_PLLCON_T Bits;
  1994. }NU_SYSCLK_PLLCON_T;
  1995. //----------------------------------------------------//
  1996. typedef enum
  1997. {
  1998. SYSCLK_FRQDIV_FSEL = 0,//分频器输出频率选择位
  1999. SYSCLK_FRQDIV_FDIV_EN = 4 //频率分频器使能位
  2000. }NU_SYSCLK_FRQDIV_ENUM;

  2001. typedef volatile union
  2002. {
  2003. NU_REG Regs;
  2004. SYSCLK_FRQDIV_T Bits;
  2005. }NU_SYSCLK_FRQDIV_T;
  2006. //----------------------------------------------------//
  2007. typedef struct
  2008. {
  2009. __IO NU_SYSCLK_PWRCON_T PWRCON;//系统掉电控制寄存器
  2010. __IO NU_SYSCLK_AHBCLK_T AHBCLK;//AHB设备时钟使能控制寄存器
  2011. __IO NU_SYSCLK_APBCLK_T APBCLK;//APB设备时钟使能控制寄存器
  2012. __IO NU_SYSCLK_CLKSTATUS_T CLKSTATUS;
  2013. __IO NU_SYSCLK_CLKSEL0_T CLKSEL0;//时钟源选择控制寄存器0
  2014. __IO NU_SYSCLK_CLKSEL1_T CLKSEL1;//时钟源选择控制寄存器1
  2015. __IO NU_SYSCLK_CLKDIV_T CLKDIV;//时钟分频寄存器
  2016. __IO NU_SYSCLK_CLKSEL2_T CLKSEL2;//时钟源选择控制寄存器2
  2017. __IO NU_SYSCLK_PLLCON_T PLLCON;//PLL 控制寄存器
  2018. __IO NU_SYSCLK_FRQDIV_T FRQDIV;//频率分频器控制寄存器
  2019. }NU_SYSCLK_T;
  2020. //----------------------------------------------------//
  2021. #define SYSCLKs (*((NU_SYSCLK_T *) SYSCLK_BASE))//定位全局结构变量SYSCLKs
  2022. //----------------------------------------------------//
  2023. #define SYSCLKx ((NU_SYSCLK_T *) SYSCLK_BASE)
  2024. //----------------------------------------------------//
  2025. typedef enum
  2026. {
  2027. GCR_RSTSRC_RSTS_POR = 0,//RSTS_POR标志位由POR模块的”复位信号”置1
  2028. GCR_RSTSRC_RSTS_RESET = 1,//RSTS_PAD标志位由/RESET脚的”复位信号”置1
  2029. GCR_RSTSRC_RSTS_WDT = 2,//RSTS_WDG标志位由看门狗模块的”复位信号”置1
  2030. GCR_RSTSRC_RSTS_LVR = 3,//RSTS_LVR标志位由低压复位模块的”复位信号”置1
  2031. GCR_RSTSRC_RSTS_BOD = 4,//RSTS_BOD标志位由欠压检测模块的”复位信号”置1
  2032. GCR_RSTSRC_RSTS_MCU = 5,//RSTS_SYS由来自MCU Cortex_M0的“复位信号“置位
  2033. GCR_RSTSRC_RSTS_CPU = 7 //RSTS_CPU标志由硬件置位
  2034. }NU_GCR_RSTSRC_ENUM;

  2035. typedef volatile union
  2036. {
  2037. NU_REG Regs;
  2038. GCR_RSTSRC_T Bits;
  2039. }NU_GCR_RSTSRC_T;
  2040. //----------------------------------------------------//
  2041. typedef enum
  2042. {
  2043. GCR_IPRSTC1_CHIP_RST = 0,//CHIP复位
  2044. GCR_IPRSTC1_CPU_RST = 1,//CPU内核复位
  2045. GCR_IPRSTC1_PDMA_RST = 2,//PDMA控制器复位
  2046. GCR_IPRSTC1_EBI_RST = 3 //EBI接口复位
  2047. }NU_GCR_IPRSTC1_ENUM;

  2048. typedef volatile union
  2049. {
  2050. NU_REG Regs;
  2051. GCR_IPRSTC1_T Bits;
  2052. }NU_GCR_IPRSTC1_T;
  2053. //----------------------------------------------------//
  2054. typedef enum
  2055. {
  2056. GCR_IPRSTC2_GPIO_RST = 1,//GPIO控制器复位
  2057. GCR_IPRSTC2_TMR0_RST = 2,//Timer0控制器复位
  2058. GCR_IPRSTC2_TMR1_RST = 3,//Timer1控制器复位
  2059. GCR_IPRSTC2_TMR2_RST = 4,//Timer2控制器复位
  2060. GCR_IPRSTC2_TMR3_RST = 5,//Timer3控制器复位
  2061. GCR_IPRSTC2_I2C0_RST = 8,//I2C0控制器复位
  2062. GCR_IPRSTC2_I2C1_RST = 9,//I2C1控制器复位
  2063. GCR_IPRSTC2_SPI0_RST = 12,//SPI0控制器复位
  2064. GCR_IPRSTC2_SPI1_RST = 13,//SPI1控制器复位
  2065. GCR_IPRSTC2_SPI2_RST = 14,//SPI2控制器复位
  2066. GCR_IPRSTC2_SPI3_RST = 15,//SPI3控制器复位
  2067. GCR_IPRSTC2_UART0_RST = 16,//UART0控制器复位
  2068. GCR_IPRSTC2_UART1_RST = 17,//UART1控制器复位
  2069. GCR_IPRSTC2_UART2_RST = 18,//UART2控制器复位
  2070. GCR_IPRSTC2_PWM03_RST = 20,//PWM03控制器复位
  2071. GCR_IPRSTC2_PWM47_RST = 21,//PWM47控制器复位
  2072. GCR_IPRSTC2_ACMP_RST = 22,//模拟比较器控制器复位
  2073. GCR_IPRSTC2_PS2_RST = 23,//PS2控制器复位
  2074. GCR_IPRSTC2_CAN0_RST = 24,//CAN0控制器复位
  2075. GCR_IPRSTC2_USBD_RST = 27,//USB设备控制器复位
  2076. GCR_IPRSTC2_ADC_RST = 28,//ADC控制器复位
  2077. GCR_IPRSTC2_I2S_RST = 29,//I2S控制器复位
  2078. }NU_GCR_IPRSTC2_ENUM;

  2079. typedef volatile union
  2080. {
  2081. NU_REG Regs;
  2082. GCR_IPRSTC2_T Bits;
  2083. }NU_GCR_IPRSTC2_T;
  2084. //----------------------------------------------------//
  2085. #ifdef __NUC1xx_H__
  2086. typedef enum
  2087. {
  2088. GCR_CPR_HPE = 0 //CHIP复位
  2089. }NU_GCR_CPR_ENUM;


  2090. typedef volatile union
  2091. {
  2092. NU_REG Regs;
  2093. GCR_CPR_T Bits;
  2094. }NU_GCR_CPR_T;
  2095. #endif
  2096. //----------------------------------------------------//
  2097. typedef enum
  2098. {
  2099. GCR_BODCR_BOD_EN = 0,//欠压检测使能
  2100. GCR_BODCR_BOD_VL = 1,//欠压检测Threshold电压选择
  2101. GCR_BODCR_BOD_RSTEN = 3,//欠压复位使能
  2102. GCR_BODCR_BOD_INTF = 4,//欠压检测中断标志
  2103. GCR_BODCR_BOD_LPM = 5,//低压模式下的欠压检测
  2104. GCR_BODCR_BOD_OUT = 6,//欠压检测输出的状态位
  2105. GCR_BODCR_LVR_EN = 7//低压复位使能
  2106. }NU_GCR_BODCR_ENUM;

  2107. typedef volatile union
  2108. {
  2109. NU_REG Regs;
  2110. GCR_BODCR_T Bits;
  2111. }NU_GCR_BODCR_T;
  2112. //----------------------------------------------------//
  2113. typedef enum
  2114. {
  2115. GCR_TEMPCR_VTEMP_EN = 0,//温度传感器使能
  2116. }NU_GCR_TEMPCR_ENUM;

  2117. typedef struct
  2118. {
  2119. __IO uint32_t VTEMP_EN:1;//温度传感器使能
  2120. __I uint32_t RESERVE1:31;
  2121. }GCR_TEMPCR_Bits;

  2122. typedef volatile union
  2123. {
  2124. NU_REG Regs;
  2125. GCR_TEMPCR_Bits Bits;
  2126. }NU_GCR_TEMPCR_T;
  2127. //----------------------------------------------------//
  2128. #ifdef __NUC1xx_H__
  2129. typedef enum
  2130. {
  2131. GCR_GPAMFP_ADC0 = 0, //PA.0 Pin功能选择ADC0
  2132. GCR_GPAMFP_ADC1_AD12 = 1, //PA.1 Pin功能选择ADC1
  2133. GCR_GPAMFP_ADC2_AD11 = 2, //PA.2 Pin功能选择ADC2
  2134. GCR_GPAMFP_ADC3_AD10 = 3, //PA.3 Pin功能选择ADC3
  2135. GCR_GPAMFP_ADC4_AD9 = 4, //PA.4 Pin功能选择ADC4
  2136. GCR_GPAMFP_ADC5_AD8 = 5, //PA.5 Pin功能选择ADC5
  2137. GCR_GPAMFP_ADC6_AD7 = 6, //PA.6 Pin功能选择ADC6
  2138. GCR_GPAMFP_ADC7_SS21_AD6 = 7,//PA.7 Pin功能选择ADC7
  2139. GCR_GPAMFP_I2C0_SDA = 8, //PA.8 Pin功能选择I2C0_SDA
  2140. GCR_GPAMFP_I2C0_SCL = 9, //PA.9 Pin功能选择I2C0_SCL
  2141. GCR_GPAMFP_I2C1_SDA_nWR = 10,//PA.10 Pin功能选择I2C1_SDA
  2142. GCR_GPAMFP_I2C1_SCL_nRD = 11,//PA.11 Pin功能选择I2C1_SCL
  2143. GCR_GPAMFP_I2C1_SDA = 10,//PA.10 Pin功能选择I2C1_SDA
  2144. GCR_GPAMFP_I2C1_SCL = 11,//PA.11 Pin功能选择I2C1_SCL
  2145. GCR_GPAMFP_I2C1_nWR = 10,//PA.10 Pin功能选择I2C1_SDA
  2146. GCR_GPAMFP_I2C1_nRD = 11,//PA.11 Pin功能选择I2C1_SCL
  2147. GCR_GPAMFP_PWM0_AD13 = 12, //PA.12 Pin功能选择PWM0
  2148. GCR_GPAMFP_PWM1_AD14 = 13, //PA.13 Pin功能选择PWM1
  2149. GCR_GPAMFP_PWM2_AD15 = 14, //PA.14 Pin功能选择PWM2
  2150. GCR_GPAMFP_PWM3_I2SMCLK = 15,//PA.15 Pin功能选择PWM3
  2151. GCR_GPAMFP_SCHMITT = 16, //PA[15:0]I/O史密特触发输入使能
  2152. }NU_GCR_GPAMFP_ENUM;

  2153. typedef volatile union
  2154. {
  2155. NU_REG Regs;
  2156. GCR_GPAMFP_T Bits;
  2157. }NU_GCR_GPAMFP_T;
  2158. #else
  2159. typedef enum
  2160. {
  2161. GCR_P0_MFP_MFP0_ADC0_CTS1 = 0, //P0.0 Pin功能选择ADC0
  2162. GCR_P0_MFP_MFP1_ADC1_RTS1 = 1, //P0.1 Pin功能选择ADC1
  2163. GCR_P0_MFP_MFP2_ADC2_CTS0 = 2, //P0.2 Pin功能选择ADC2
  2164. GCR_P0_MFP_MFP3_ADC3_RTS0 = 3, //P0.3 Pin功能选择ADC3
  2165. GCR_P0_MFP_MFP4_ADC4_SS1 = 4, //P0.4 Pin功能选择ADC4
  2166. GCR_P0_MFP_MFP5_ADC5_MOSI1 = 5, //P0.5 Pin功能选择ADC5
  2167. GCR_P0_MFP_MFP6_ADC6_MISO1 = 6, //P0.6 Pin功能选择ADC6
  2168. GCR_P0_MFP_MFP7_ADC7_SCLK1 = 7, //P0.7 Pin功能选择ADC7
  2169. GCR_P0_MFP_ALT0_AD0_CTS1 = 8, //P0.8 Pin功能选择I2C0_SDA
  2170. GCR_P0_MFP_ALT1_AD1_RTS1 = 9, //P0.9 Pin功能选择I2C0_SCL
  2171. GCR_P0_MFP_ALT2_AD2_CTS0 = 10, //P0.10 Pin功能选择I2C1_SDA
  2172. GCR_P0_MFP_ALT3_AD3_RTS0 = 11,//P0.11 Pin功能选择I2C1_SCL
  2173. GCR_P0_MFP_ALT4_AD4_SS1 = 12, //P0.12 Pin功能选择PWM0
  2174. GCR_P0_MFP_ALT5_AD5_MOSI1 = 13, //P0.13 Pin功能选择PWM1
  2175. GCR_P0_MFP_ALT6_AD6_MISO1 = 14, //P0.14 Pin功能选择PWM2
  2176. GCR_P0_MFP_ALT7_AD7_SCLK1 = 15,//P0.15 Pin功能选择PWM3
  2177. GCR_P0_MFP_SCHMITT = 16, //P0[7:0]I/O史密特触发输入使能
  2178. }NU_GCR_P0_MFP_ENUM;

  2179. typedef volatile union
  2180. {
  2181. NU_REG Regs;
  2182. GCR_P0_MFP_T Bits;
  2183. }NU_GCR_P0_MFP_T;
  2184. #endif
  2185. //----------------------------------------------------//
  2186. #ifdef __NUC1xx_H__
  2187. typedef enum
  2188. {
  2189. GCR_GPBMFP_UART0_RX = 0,//PB.0 Pin功能选择
  2190. GCR_GPBMFP_UART0_TX = 1,//PB.1 Pin功能选择
  2191. GCR_GPBMFP_UART0_nRTS_nWRL = 2,//PB.2 Pin功能选择
  2192. GCR_GPBMFP_UART0_nCTS_nWRH = 3,//PB.3 Pin功能选择
  2193. GCR_GPBMFP_UART1_RX = 4,//PB.4 Pin功能选择
  2194. GCR_GPBMFP_UART1_TX = 5,//PB.5 Pin功能选择
  2195. GCR_GPBMFP_UART1_nRTS_ALE = 6,//PB.6 Pin功能选择
  2196. GCR_GPBMFP_UART1_nCTS_nCS = 7,//PB.7 Pin功能选择
  2197. GCR_GPBMFP_TM0 = 8,//PB.8 Pin功能选择
  2198. GCR_GPBMFP_TM1_SS11 = 9,//PB.9 Pin功能选择
  2199. GCR_GPBMFP_TM2_SS01 = 10,//PB.10 Pin功能选择
  2200. GCR_GPBMFP_TM3_PWM4 = 11,//PB.11 Pin功能选择
  2201. GCR_GPBMFP_CPO0_CLKO_AD0 = 12,//PB.12 Pin功能选择
  2202. GCR_GPBMFP_CPO1_AD1 = 13,//PB.13 Pin功能选择
  2203. GCR_GPBMFP_INT1_SS31 = 14,//PB.14 Pin功能选择
  2204. GCR_GPBMFP_INT0 = 15,//PB.15 Pin功能选择
  2205. GCR_GPBMFP_SCHMITT = 16//PB[15:0]I/O史密特触发输入使能
  2206. }NU_GCR_GPBMFP_ENUM;

  2207. typedef volatile union
  2208. {
  2209. NU_REG Regs;
  2210. GCR_GPBMFP_T Bits;
  2211. }NU_GCR_GPBMFP_T;
  2212. #else
  2213. typedef enum
  2214. {
  2215. GCR_P1_MFP_MFP0_AIN0_T2 = 0,//P1.0 Pin功能选择
  2216. GCR_P1_MFP_MFP1_AIN1_T3 = 1,//P1.1 Pin功能选择
  2217. GCR_P1_MFP_MFP2_AIN2_RXD1 = 2,//P1.2 Pin功能选择
  2218. GCR_P1_MFP_MFP3_AIN3_TXD1 = 3,//P1.3 Pin功能选择
  2219. GCR_P1_MFP_MFP4_AIN4_SS0 = 4,//P1.4 Pin功能选择
  2220. GCR_P1_MFP_MFP5_AIN5_MOSI0 = 5,//P1.5 Pin功能选择
  2221. GCR_P1_MFP_MFP6_AIN6_MISO0 = 6,//P1.6 Pin功能选择
  2222. GCR_P1_MFP_MFP7_AIN7_SCLK0 = 7,//P1.7 Pin功能选择
  2223. GCR_P1_MFP_ALT0_AIN0_T2 = 8,//P1.8 Pin功能选择
  2224. GCR_P1_MFP_ALT1_AIN1_T3 = 9,//P1.9 Pin功能选择
  2225. GCR_P1_MFP_ALT2_AIN2_RXD1 = 10,//P1.10 Pin功能选择
  2226. GCR_P1_MFP_ALT3_AIN3_TXD1 = 11,//P1.11 Pin功能选择
  2227. GCR_P1_MFP_ALT4_AIN4_SS0 = 12,//P1.12 Pin功能选择
  2228. GCR_P1_MFP_ALT5_AIN5_MOSI0 = 13,//P1.13 Pin功能选择
  2229. GCR_P1_MFP_ALT6_AIN6_MISO0 = 14,//P1.14 Pin功能选择
  2230. GCR_P1_MFP_ALT7_AIN7_SCLK0 = 15,//P1.15 Pin功能选择
  2231. GCR_P1_MFP_SCHMITT = 16//P1[7:0]I/O史密特触发输入使能
  2232. }NU_GCR_GPBMFP_ENUM;

  2233. typedef volatile union
  2234. {
  2235. NU_REG Regs;
  2236. GCR_P1_MFP_T Bits;
  2237. }NU_GCR_P1_MFP_T;
  2238. #endif
  2239. //----------------------------------------------------//
  2240. #ifdef __NUC1xx_H__
  2241. typedef enum
  2242. {
  2243. GCR_GPCMFP_SPI0_SS0_I2SLRCLK = 0,//PC.0 Pin功能选择
  2244. GCR_GPCMFP_SPI0_CLK_I2SBCLK = 1,//PC.0 Pin功能选择
  2245. GCR_GPCMFP_SPI0_MISO0_I2SDI = 2,//PC.0 Pin功能选择
  2246. GCR_GPCMFP_SPI0_MOSI0_I2SDO = 3,//PC.0 Pin功能选择
  2247. GCR_GPCMFP_SPI0_MISO1 = 4,//PC.0 Pin功能选择
  2248. GCR_GPCMFP_SPI0_MOSI1 = 5,//PC.0 Pin功能选择
  2249. GCR_GPCMFP_CPP0_AD4 = 6,//PC.0 Pin功能选择
  2250. GCR_GPCMFP_CPN0_AD5 = 7,//PC.0 Pin功能选择
  2251. GCR_GPCMFP_SPI1_SS0_MCLK = 8,//PC.0 Pin功能选择
  2252. GCR_GPCMFP_SPI1_CLK = 9,//PC.0 Pin功能选择
  2253. GCR_GPCMFP_SPI1_MISO0 = 10,//PC.0 Pin功能选择
  2254. GCR_GPCMFP_SPI1_MOSI0 = 11,//PC.0 Pin功能选择
  2255. GCR_GPCMFP_SPI1_MISO1 = 12,//PC.0 Pin功能选择
  2256. GCR_GPCMFP_SPI1_MOSI1 = 13,//PC.0 Pin功能选择
  2257. GCR_GPCMFP_CPP1_AD2 = 14,//PC.0 Pin功能选择
  2258. GCR_GPCMFP_CPN1_AD3 = 15,//PC.0 Pin功能选择
  2259. GCR_GPCMFP_SCHMITT = 16,//PC[15:0]I/O史密特触发输入使能
  2260. }NU_GCR_GPCMFP_ENUM;

  2261. typedef volatile union
  2262. {
  2263. NU_REG Regs;
  2264. GCR_GPCMFP_T Bits;
  2265. }NU_GCR_GPCMFP_T;
  2266. #else
  2267. typedef enum
  2268. {
  2269. GCR_P2_MFP_MFP0_AD8_PWM0 = 0,//P2.0 Pin功能选择
  2270. GCR_P2_MFP_MFP1_AD9_PWM1 = 1,//P2.0 Pin功能选择
  2271. GCR_P2_MFP_MFP2_AD10_PWM2 = 2,//P2.0 Pin功能选择
  2272. GCR_P2_MFP_MFP3_AD11_PWM3 = 3,//P2.0 Pin功能选择
  2273. GCR_P2_MFP_MFP4_AD12_PWM4 = 4,//P2.0 Pin功能选择
  2274. GCR_P2_MFP_MFP5_AD13_PWM5 = 5,//P2.0 Pin功能选择
  2275. GCR_P2_MFP_MFP6_AD14_PWM6 = 6,//P2.0 Pin功能选择
  2276. GCR_P2_MFP_MFP7_AD15_PWM7 = 7,//P2.0 Pin功能选择
  2277. GCR_P2_MFP_ALT0_AD8_PWM0 = 8,//P2.0 Pin功能选择
  2278. GCR_P2_MFP_ALT1_AD9_PWM1 = 9,//P2.0 Pin功能选择
  2279. GCR_P2_MFP_ALT2_AD10_PWM2 = 10,//P2.0 Pin功能选择
  2280. GCR_P2_MFP_ALT3_AD11_PWM3 = 11,//P2.0 Pin功能选择
  2281. GCR_P2_MFP_ALT4_AD12_PWM4 = 12,//P2.0 Pin功能选择
  2282. GCR_P2_MFP_ALT5_AD13_PWM5 = 13,//P2.0 Pin功能选择
  2283. GCR_P2_MFP_ALT6_AD14_PWM6 = 14,//P2.0 Pin功能选择
  2284. GCR_P2_MFP_ALT7_AD15_PWM7 = 15,//P2.0 Pin功能选择
  2285. GCR_P2_MFP_SCHMITT = 16,//P2[15:0]I/O史密特触发输入使能
  2286. }NU_GCR_P2_MFP_ENUM;

  2287. typedef volatile union
  2288. {
  2289. NU_REG Regs;
  2290. GCR_P2_MFP_T Bits;
  2291. }NU_GCR_P2_MFP_T;
  2292. #endif
  2293. //----------------------------------------------------//
  2294. #ifdef __NUC1xx_H__
  2295. typedef enum
  2296. {
  2297. GCR_GPDMFP_SPI2_SS0 = 0,//PD.0 Pin功能选择
  2298. GCR_GPDMFP_SPI2_CLK_SPI0_SS1 = 1,//PD.1 Pin功能选择
  2299. GCR_GPDMFP_SPI2_MISO0_SPI0_MISO1 = 2,//PD.2 Pin功能选择
  2300. GCR_GPDMFP_SPI2_MOSI0_SPI0_MOSI1 = 3,//PD.3 Pin功能选择
  2301. GCR_GPDMFP_SPI2_MISO1 = 4,//PD.4 Pin功能选择
  2302. GCR_GPDMFP_SPI2_MOSI1 = 5,//PD.5 Pin功能选择
  2303. GCR_GPDMFP_CAN0_RX = 6,//PD.6 Pin功能选择
  2304. GCR_GPDMFP_CAN0_TX = 7,//PD.7 Pin功能选择
  2305. GCR_GPDMFP_SPI3_SS0 = 8,//PD.8 Pin功能选择
  2306. GCR_GPDMFP_SPI3_CLK = 9,//PD.9 Pin功能选择
  2307. GCR_GPDMFP_SPI3_MISO0 = 10,//PD.10 Pin功能选择
  2308. GCR_GPDMFP_SPI3_MOSI0 = 11,//PD.11 Pin功能选择
  2309. GCR_GPDMFP_SPI3_MISO1 = 12,//PD.12 Pin功能选择
  2310. GCR_GPDMFP_SPI3_MOSI1 = 13,//PD.13 Pin功能选择
  2311. GCR_GPDMFP_UART2_RX = 14,//PD.14 Pin功能选择
  2312. GCR_GPDMFP_UART2_TX = 15,//PD.15 Pin功能选择
  2313. GCR_GPDMFP_SCHMITT = 16,//PD[15:0]I/O史密特触发输入使能
  2314. }NU_GCR_GPDMFP_ENUM;

  2315. typedef volatile union
  2316. {
  2317. NU_REG Regs;
  2318. GCR_GPDMFP_T Bits;
  2319. }NU_GCR_GPDMFP_T;
  2320. #else
  2321. typedef enum
  2322. {
  2323. GCR_P3_MFP_MFP0_RXD0 = 0,//P3.0 Pin功能选择
  2324. GCR_P3_MFP_MFP1_TXD0 = 1,//P3.1 Pin功能选择
  2325. GCR_P3_MFP_MFP2_INT0 = 2,//P3.2 Pin功能选择
  2326. GCR_P3_MFP_MFP3_INT1_MCLK = 3,//P3.3 Pin功能选择
  2327. GCR_P3_MFP_MFP4_T0_SDA = 4,//P3.4 Pin功能选择
  2328. GCR_P3_MFP_MFP5_T1_SCL = 5,//P3.5 Pin功能选择
  2329. GCR_P3_MFP_MFP6_WR_CKO = 6,//P3.6 Pin功能选择
  2330. GCR_P3_MFP_MFP7_RD = 7,//P3.7 Pin功能选择
  2331. GCR_P3_MFP_ALT0_RXD0 = 8,//P3.0 Pin功能选择
  2332. GCR_P3_MFP_ALT1_TXD0 = 9,//P3.1 Pin功能选择
  2333. GCR_P3_MFP_ALT2_INT0 = 10,//P3.2 Pin功能选择
  2334. GCR_P3_MFP_ALT3_INT1_MCLK = 11,//P3.3 Pin功能选择
  2335. GCR_P3_MFP_ALT4_T0_SDA = 12,//P3.4 Pin功能选择
  2336. GCR_P3_MFP_ALT5_T1_SCL = 13,//P3.5 Pin功能选择
  2337. GCR_P3_MFP_ALT6_WR_CKO = 14,//P3.6 Pin功能选择
  2338. GCR_P3_MFP_ALT7_RD = 15,//P3.7 Pin功能选择
  2339. GCR_P3_MFP_SCHMITT = 16,//P3[8:0]I/O史密特触发输入使能
  2340. }NU_GCR_P3_MFP_ENUM;

  2341. typedef volatile union
  2342. {
  2343. NU_REG Regs;
  2344. GCR_P3_MFP_T Bits;
  2345. }NU_GCR_P3_MFP_T;
  2346. #endif
  2347. //----------------------------------------------------//
  2348. #ifdef __NUC1xx_H__
  2349. typedef enum
  2350. {
  2351. GCR_GPEMFP_PWM6 = 0,//PE.0 Pin功能选择
  2352. GCR_GPEMFP_PWM7 = 1,//PE.1 Pin功能选择
  2353. GCR_GPEMFP_PWM5 = 5,//PE.6 Pin功能选择
  2354. GCR_GPEMFP_SCHMITT = 16 //PE[7:0]I/O史密特触发输入使能
  2355. }NU_GCR_GPEMFP_ENUM;

  2356. typedef volatile union
  2357. {
  2358. NU_REG Regs;
  2359. GCR_GPEMFP_T Bits;
  2360. }NU_GCR_GPEMFP_T;
  2361. #else
  2362. typedef enum
  2363. {
  2364. GCR_P4_MFP_MFP0_PWM0 = 0,//P4.0 Pin功能选择
  2365. GCR_P4_MFP_MFP1_PWM1 = 1,//P4.1 Pin功能选择
  2366. GCR_P4_MFP_MFP2_PWM2 = 2,//P4.2 Pin功能选择
  2367. GCR_P4_MFP_MFP3_PWM3 = 3,//P4.3 Pin功能选择
  2368. GCR_P4_MFP_MFP4_CS = 4,//P4.4 Pin功能选择
  2369. GCR_P4_MFP_MFP5_ALE = 5,//P4.5 Pin功能选择
  2370. GCR_P4_MFP_MFP6_ICE_CLK = 6,//P4.6 Pin功能选择
  2371. GCR_P4_MFP_MFP7_ICE_DAT = 7,//P4.7 Pin功能选择
  2372. GCR_P4_MFP_ALT0_PWM0 = 8,//P4.0 Pin功能选择
  2373. GCR_P4_MFP_ALT1_PWM1 = 9,//P4.1 Pin功能选择
  2374. GCR_P4_MFP_ALT2_PWM2 = 10,//P4.2 Pin功能选择
  2375. GCR_P4_MFP_ALT3_PWM3 = 11,//P4.3 Pin功能选择
  2376. GCR_P4_MFP_ALT4_CS = 12,//P4.4 Pin功能选择
  2377. GCR_P4_MFP_ALT5_ALE = 13,//P4.5 Pin功能选择
  2378. GCR_P4_MFP_ALT6_ICE_CLK = 14,//P4.6 Pin功能选择
  2379. GCR_P4_MFP_ALT7_ICE_DAT = 15,//P4.7 Pin功能选择
  2380. GCR_P4_MFP_SCHMITT = 16 //P4[15:0]I/O史密特触发输入使能
  2381. }NU_GCR_P4_MFP_ENUM;

  2382. typedef volatile union
  2383. {
  2384. NU_REG Regs;
  2385. GCR_P4_MFP_T Bits;
  2386. }NU_GCR_P4_MFP_T;
  2387. #endif
  2388. //----------------------------------------------------//
  2389. #ifdef __NUC1xx_H__
  2390. typedef enum
  2391. {
  2392. GCR_ALTMFP_PB10_S01 = 0,//PB10_S01与GPB_MFP[10]决定GPB.10的功能
  2393. GCR_ALTMFP_PB9_S11 = 1,//PB9_S11与GPB_MFP[9]决定PB.9的功能
  2394. GCR_ALTMFP_PA7_S21 = 2,//PA7_S21与GPA_MFP[7]决定PA.7的功能
  2395. GCR_ALTMFP_PB14_S31 = 3,//PB14_S31与GPB_MFP[14]决定PB.14的功能
  2396. GCR_ALTMFP_PB11_PWM4 = 4,//PB11_PWM4与GPB_MFP[11]决定PB.11的功能
  2397. GCR_ALTMFP_PC0_I2SLRCLK = 5,//PC0_I2SLRCLK与GPC_MFP[0]决定P2.0的功能
  2398. GCR_ALTMFP_PC1_I2SBCLK = 6,//PC1_I2SBCLK与GPC_MFP[1 决定P2.1的功能
  2399. GCR_ALTMFP_PC2_I2SDI = 7,//PC2_I2SDI与GPC_MFP[2]决定P2.2的功能
  2400. GCR_ALTMFP_PC3_I2SDO = 8,//PC2_I2SDO与GPC_MFP[3]决定P2.3的功能
  2401. GCR_ALTMFP_PA15_I2SMCLK = 9,//PA15_I2SMCLK与GPA_MFP[15]决定PA.15的功能
  2402. GCR_ALTMFP_PB12_CLKO = 10,//PB12_CLKO与GPB_MFP[12]决定PB.12的功能
  2403. GCR_ALTMFP_EBI_EN = 11,
  2404. GCR_ALTMFP_EBI_MCLK_EN = 12, /* GPC8 */
  2405. GCR_ALTMFP_EBI_WRL_EN =13, /* GPB2 */
  2406. GCR_ALTMFP_EBI_WRH_EN = 14, /* GPB3 */
  2407. GCR_ALTMFP_EBI_HB_EN = 15
  2408. }NU_GCR_ALTMFP_ENUM;

  2409. typedef volatile union
  2410. {
  2411. NU_REG Regs;
  2412. GCR_ALTMFP_T Bits;
  2413. }NU_GCR_ALTMFP_T;
  2414. #endif
  2415. //----------------------------------------------------//
  2416. typedef struct
  2417. {
  2418. __IO NU_REG_BITs PDID;
  2419. __IO NU_GCR_RSTSRC_T RSTSRC;//系统管理器控制寄存器
  2420. __IO NU_GCR_IPRSTC1_T IPRSTC1;//IP复位控制寄存器1
  2421. __IO NU_GCR_IPRSTC2_T IPRSTC2;//IP复位控制寄存器2
  2422. #ifdef __NUC1xx_H__
  2423. __IO NU_GCR_CPR_T CPR;
  2424. #else
  2425. __I NU_REG RESERVE0;
  2426. #endif
  2427. __I NU_REG RESERVE1;
  2428. __IO NU_GCR_BODCR_T BODCR;//欠压检测控制寄存器
  2429. #ifdef __NUC1xx_H__
  2430. __IO NU_GCR_TEMPCR_T TEMPCR;//温度传感器控制寄存器
  2431. #else
  2432. __I NU_REG RESERVE2;//M05x无温度传感器控制寄存器
  2433. #endif
  2434. __I NU_REG RESERVE3;
  2435. __IO NU_REG_BITs PORCR;//上电复位控制寄存器
  2436. __I NU_REG RESERVE4[2];
  2437. #ifdef __NUC1xx_H__
  2438. __IO NU_GCR_GPAMFP_T GPAMFP;//多功能GPIOA控制寄存器
  2439. __IO NU_GCR_GPBMFP_T GPBMFP;//多功能GPIOB控制寄存器
  2440. __IO NU_GCR_GPCMFP_T GPCMFP;//多功能GPIOC控制寄存器
  2441. __IO NU_GCR_GPDMFP_T GPDMFP;//多功能GPIOD控制寄存器
  2442. __IO NU_GCR_GPEMFP_T GPEMFP;//多功能GPIOE控制寄存器
  2443. #else
  2444. __IO NU_GCR_P0_MFP_T P0_MFP;//多功能GPIO0控制寄存器
  2445. __IO NU_GCR_P1_MFP_T P1_MFP;//多功能GPIO1控制寄存器
  2446. __IO NU_GCR_P2_MFP_T P2_MFP;//多功能GPIO2控制寄存器
  2447. __IO NU_GCR_P3_MFP_T P3_MFP;//多功能GPIO3控制寄存器
  2448. __IO NU_GCR_P4_MFP_T P4_MFP;//多功能GPIO4控制寄存器
  2449. #endif
  2450. __I NU_REG RESERVE5[3];
  2451. #ifdef __NUC1xx_H__
  2452. __IO NU_GCR_ALTMFP_T ALTMFP;//可选多功能引脚控制寄存器
  2453. #else
  2454. __I NU_REG RESERVE6;//M05x无可选多功能引脚控制寄存器
  2455. #endif
  2456. __I NU_REG RESERVE7[43];
  2457. #ifdef __NUC1xx_H__
  2458. __IO NU_REG_BITs REGLOCK;//寄存器锁定键地址寄存器
  2459. #else
  2460. union{
  2461. __IO NU_REG_BITs REGLOCK;//寄存器锁定键地址寄存器
  2462. __IO NU_REG_BITs REGWRPROT;
  2463. };
  2464. #endif
  2465. __I NU_REG RESERVE8[3];
  2466. __IO NU_REG_BITs RCADJ;//RC 校验控制寄存器
  2467. }NU_GCR_T;
  2468. //----------------------------------------------------//
  2469. #define SYSs (*((NU_GCR_T *) GCR_BASE))//定位全局结构变量SYSs
  2470. //----------------------------------------------------//
  2471. #define SYSx ((NU_GCR_T *) GCR_BASE)
  2472. //----------------------------------------------------//
  2473. typedef enum
  2474. {
  2475. GCR_INTSRC_INTSRC = 0//
  2476. }NU_GCR_INTSRC_ENUM;

  2477. typedef volatile union
  2478. {
  2479. NU_REG Regs;
  2480. GCR_INTSRC_T Bits;
  2481. }NU_GCR_INTSRC_T;
  2482. //----------------------------------------------------//
  2483. typedef enum
  2484. {
  2485. GCR_NMISEL_NMISEL = 0,//Cortex-M0的NMI 中断源可以从interrupt[31:0]中选择一个
  2486. GCR_NMISEL_INT_TEST = 7//
  2487. }NU_GCR_NMISEL_ENUM;

  2488. typedef volatile union
  2489. {
  2490. NU_REG Regs;
  2491. GCR_NMISEL_T Bits;
  2492. }NU_GCR_NMISEL_T;
  2493. //----------------------------------------------------//
  2494. typedef struct
  2495. {
  2496. __I NU_GCR_INTSRC_T INTSRC[32];//MCU IRQ0~31 (BOD) 中断源识别
  2497. __IO NU_GCR_NMISEL_T NMISEL;//NMI 中断源选择控制寄存器
  2498. __IO NU_REG_BITs MCUIRQ;//MCU IRQ 号识别寄存器
  2499. }NU_GCR_INT_T;
  2500. //----------------------------------------------------//
  2501. #define SYSINTs (*((NU_GCR_INT_T *) INT_BASE))//定位全局结构变量GCR_INTs
  2502. //----------------------------------------------------//
  2503. #define SYSINTx ((NU_GCR_INT_T *) INT_BASE)
  2504. //----------------------------------------------------//
  2505. typedef enum
  2506. {
  2507. WDT_WTCR_WTR = 0,//看门狗定时器重置
  2508. WDT_WTCR_WTRE = 1,//看门狗定时器复位使能
  2509. WDT_WTCR_WTRF = 2,//看门狗定时器复位标志
  2510. WDT_WTCR_WTIF = 3,//看门狗定时器中断标志
  2511. WDT_WTCR_WTWKE = 4,//看门狗定时器唤醒功能使能位
  2512. WDT_WTCR_WTWKF = 5,//看门狗定时器唤醒标志
  2513. WDT_WTCR_WTIE = 6,//看门狗定时器中断使能
  2514. WDT_WTCR_WTE = 7,//看门狗定时器使能
  2515. WDT_WTCR_WTIS = 8,//看门狗定时器间隔选择
  2516. //000:69.33us 001:72.53us 010:85.33us 011:170.67us
  2517. //100:426.67us 101:1.45ms 110:5.55ms 111:21.93ms
  2518. }NU_WDT_WTCR_ENUM;

  2519. typedef volatile union
  2520. {
  2521. NU_REG Regs;
  2522. WDT_WTCR_T Bits;
  2523. }NU_WDT_WTCR_T;
  2524. //----------------------------------------------------//
  2525. typedef struct
  2526. {
  2527. __IO NU_WDT_WTCR_T WTCR;//看门狗定时器控制寄存器
  2528. }NU_WDT_T;
  2529. //----------------------------------------------------//
  2530. #define WDTs (*((NU_WDT_T *) WDT_BASE))//定位全局结构变量WDTs
  2531. //----------------------------------------------------//
  2532. #define WDTx ((NU_WDT_T *) WDT_BASE)
  2533. //----------------------------------------------------//
  2534. #ifdef __NUC1xx_H__
  2535. typedef enum
  2536. {
  2537. RTC_AER_AER = 0,//RTC寄存器写入使能密码(只写)
  2538. RTC_AER_ENF = 16//RTC 寄存器写入使能标志(只读)
  2539. }NU_RTC_AER_ENUM;

  2540. typedef volatile union
  2541. {
  2542. NU_REG Regs;
  2543. RTC_AER_T Bits;
  2544. }NU_RTC_AER_T;

  2545. typedef enum
  2546. {
  2547. RTC_FCR_INTEGER_32761 = 0,
  2548. RTC_FCR_INTEGER_32762 = 1,
  2549. RTC_FCR_INTEGER_32763 = 2,
  2550. RTC_FCR_INTEGER_32764 = 3,
  2551. RTC_FCR_INTEGER_32765 = 4,
  2552. RTC_FCR_INTEGER_32766 = 5,
  2553. RTC_FCR_INTEGER_32767 = 6,
  2554. RTC_FCR_INTEGER_32768 = 7,
  2555. RTC_FCR_INTEGER_32769 = 8,
  2556. RTC_FCR_INTEGER_32770 = 9,
  2557. RTC_FCR_INTEGER_32771 = 10,
  2558. RTC_FCR_INTEGER_32772 = 11,
  2559. RTC_FCR_INTEGER_32773 = 12,
  2560. RTC_FCR_INTEGER_32774 = 13,
  2561. RTC_FCR_INTEGER_32775 = 14,
  2562. RTC_FCR_INTEGER_32776 = 15
  2563. }NU_RTC_FCR_INTEGER_ENUM;
  2564. //----------------------------------------------------//
  2565. typedef enum
  2566. {
  2567. RTC_FCR_FRACTION = 0,//分数部分(公式=(分数部分值)x60)
  2568. RTC_FCR_INTEGER = 8 //整数部分
  2569. }NU_RTC_FCR_ENUM;

  2570. typedef volatile union
  2571. {
  2572. NU_REG Regs;
  2573. RTC_FCR_T Bits;
  2574. }NU_RTC_FCR_T;
  2575. //----------------------------------------------------//
  2576. typedef enum
  2577. {
  2578. RTC_TLR_SEC1 = 0,//秒个位
  2579. RTC_TLR_SEC10 = 4,//秒十位
  2580. RTC_TLR_MIN1 = 8,//分个位
  2581. RTC_TLR_MIN10 = 12,//分十位
  2582. RTC_TLR_HR1 = 16,//小时个位
  2583. RTC_TLR_HR10 = 20//小时十位
  2584. }NU_RTC_TLR_ENUM;

  2585. typedef volatile union
  2586. {
  2587. NU_REG Regs;
  2588. RTC_TLR_T Bits;
  2589. }NU_RTC_TLR_T;
  2590. //----------------------------------------------------//
  2591. typedef enum
  2592. {
  2593. RTC_CLR_DAY1 = 0,//日位
  2594. RTC_CLR_DAY10 = 4,//日十位
  2595. RTC_CLR_MON1 = 8,//月个位
  2596. RTC_CLR_MON10 = 12,//月十位
  2597. RTC_CLR_YEAR1 = 16,//年个位
  2598. RTC_CLR_YEAR10 = 20//年十位
  2599. }NU_RTC_CLR_ENUM;

  2600. typedef volatile union
  2601. {
  2602. NU_REG Regs;
  2603. RTC_CLR_T Bits;
  2604. }NU_RTC_CLR_T;
  2605. //----------------------------------------------------//
  2606. typedef enum
  2607. {
  2608. RTC_TSSR_HR24 = 0//(1)24-小时/(0)12-小时模式选择(带AM /PM 指示)
  2609. }NU_RTC_TSSR_ENUM;

  2610. typedef volatile union
  2611. {
  2612. NU_REG Regs;
  2613. RTC_TSSR_T Bits;
  2614. }NU_RTC_TSSR_T;
  2615. //----------------------------------------------------//
  2616. typedef enum
  2617. {
  2618. RTC_DWR_DWR = 0//一周日期寄存器(0:星期天 1:星期一 6:星期六)
  2619. }NU_RTC_DWR_ENUM;

  2620. typedef volatile union
  2621. {
  2622. NU_REG Regs;
  2623. RTC_DWR_T Bits;
  2624. }NU_RTC_DWR_T;

  2625. typedef enum
  2626. {
  2627. RTC_TAR_SEC1 = 0,//秒个位
  2628. RTC_TAR_SEC10 = 4,//秒十位
  2629. RTC_TAR_MIN1 = 8,//分个位
  2630. RTC_TAR_MIN10 = 12,//分十位
  2631. RTC_TAR_HR1 = 16,//小时个位
  2632. RTC_TAR_HR10 = 20//小时十位
  2633. }NU_RTC_TAR_ENUM;
  2634. //----------------------------------------------------//
  2635. typedef volatile union
  2636. {
  2637. NU_REG Regs;
  2638. RTC_TLR_T Bits;
  2639. }NU_RTC_TAR_T;

  2640. typedef enum
  2641. {
  2642. RTC_CAR_DAY1 = 0,//日位
  2643. RTC_CAR_DAY10 = 4,//日十位
  2644. RTC_CAR_MON1 = 8,//月个位
  2645. RTC_CAR_MON10 = 12,//月十位
  2646. RTC_CAR_YEAR1 = 16,//年个位
  2647. RTC_CAR_YEAR10 = 20//年十位
  2648. }NU_RTC_CAR_ENUM;

  2649. typedef volatile union
  2650. {
  2651. NU_REG Regs;
  2652. RTC_CLR_T Bits;
  2653. }NU_RTC_CAR_T;
  2654. //----------------------------------------------------//
  2655. typedef enum
  2656. {
  2657. RTC_LIR_LIR = 0//按年分割指示寄存器(只读)
  2658. }NU_RTC_LIR_ENUM;

  2659. typedef volatile union
  2660. {
  2661. NU_REG Regs;
  2662. RTC_LIR_T Bits;
  2663. }NU_RTC_LIR_T;

  2664. typedef enum
  2665. {
  2666. RTC_RIER_AIER = 0,//闹钟中断使能
  2667. RTC_RIER_TIER = 1 //时钟节拍中断使能
  2668. }NU_RTC_RIER_ENUM;

  2669. typedef volatile union
  2670. {
  2671. NU_REG Regs;
  2672. RTC_RIER_T Bits;
  2673. }NU_RTC_RIER_T;
  2674. //----------------------------------------------------//
  2675. typedef enum
  2676. {
  2677. RTC_RIIR_AI = 0,//RTC闹钟中断标志
  2678. RTC_RIIR_TI = 1 //RTC时钟节拍中断标志
  2679. }NU_RTC_RIIR_ENUM;

  2680. typedef volatile union
  2681. {
  2682. NU_REG Regs;
  2683. RTC_RIIR_T Bits;
  2684. }NU_RTC_RIIR_T;
  2685. //----------------------------------------------------//
  2686. typedef enum
  2687. {
  2688. RTC_TTR_TWKE_1 = 0,//时钟节拍1
  2689. RTC_TTR_TWKE_1_2 = 1,//时钟节拍1/2
  2690. RTC_TTR_TWKE_1_4 = 2,//时钟节拍1/4
  2691. RTC_TTR_TWKE_1_8 = 3,//时钟节拍1/8
  2692. RTC_TTR_TWKE_1_16 = 4,//时钟节拍1/16
  2693. RTC_TTR_TWKE_1_32 = 5,//时钟节拍1/32
  2694. RTC_TTR_TWKE_1_64 = 6,//时钟节拍1/64
  2695. RTC_TTR_TWKE_1_128 = 7,//时钟节拍1/128
  2696. }NU_RTC_TTR_TWKE_ENUM;

  2697. typedef enum
  2698. {
  2699. RTC_TTR_TTR = 0,//时钟节拍寄存器
  2700. RTC_TTR_TWKE = 3 //RTC定时器唤醒CPU使能位
  2701. }NU_RTC_TTR_ENUM;

  2702. typedef volatile union
  2703. {
  2704. NU_REG Regs;
  2705. RTC_TTR_T Bits;
  2706. }NU_RTC_TTR_T;
  2707. //----------------------------------------------------//
  2708. typedef enum
  2709. {
  2710. RTC_PWRCON_PTOUT = 0,//
  2711. RTC_PWRCON_PWROFF = 16//
  2712. }NU_RTC_PWRCON_ENUM;

  2713. typedef volatile union
  2714. {
  2715. NU_REG Regs;
  2716. RTC_PWRCON_T Bits;
  2717. }NU_RTC_PWRCON_T;
  2718. //----------------------------------------------------//
  2719. typedef struct
  2720. {
  2721. __IO NU_REG_BITs INIR;//RTC复位寄存器
  2722. __IO NU_RTC_AER_T AER;//RTC读写使能寄存器
  2723. __IO NU_RTC_FCR_T FCR;//RTC频率补偿寄存器
  2724. __IO NU_RTC_TLR_T TLR;//时间载入寄存器
  2725. __IO NU_RTC_CLR_T CLR;//日历载入寄存器
  2726. __IO NU_RTC_TSSR_T TSSR;//时间格式选择寄存器
  2727. __IO NU_RTC_DWR_T DWR;//一周日期寄存器
  2728. __IO NU_RTC_TAR_T TAR;//时间闹钟寄存器
  2729. __IO NU_RTC_CAR_T CAR;//日历闹钟寄存器
  2730. __IO NU_RTC_LIR_T LIR;//年分割指示寄存器
  2731. __IO NU_RTC_RIER_T RIER;//RTC中断使能寄存器
  2732. __IO NU_RTC_RIIR_T RIIR;//RTC中断指示寄存器
  2733. __IO NU_RTC_TTR_T TTR;//RTC时钟节拍寄存器
  2734. __IO NU_RTC_PWRCON_T PWRCON;
  2735. }NU_RTC_T;
  2736. //----------------------------------------------------//
  2737. #define RTCs (*((NU_RTC_T *) RTC_BASE))//定位全局结构变量RTCs
  2738. //----------------------------------------------------//
  2739. #define RTCx ((NU_RTC_T *) RTC_BASE)
  2740. #endif
  2741. //----------------------------------------------------//
  2742. typedef enum
  2743. {
  2744. FMC_ISPCON_PT_40uS,FMC_ISPCON_PT_45uS,FMC_ISPCON_PT_50uS,FMC_ISPCON_PT_55uS,
  2745. FMC_ISPCON_PT_20uS,FMC_ISPCON_PT_25uS,FMC_ISPCON_PT_30uS,FMC_ISPCON_PT_35uS
  2746. }NU_FMC_ISPCON_PT_ENUM;

  2747. typedef enum
  2748. {
  2749. FMC_ISPCON_ET_20uS,FMC_ISPCON_ET_25uS,FMC_ISPCON_ET_30uS,FMC_ISPCON_ET_35uS,
  2750. FMC_ISPCON_ET_3uS,FMC_ISPCON_ET_5uS,FMC_ISPCON_ET_10uS,FMC_ISPCON_ET_15uS
  2751. }NU_FMC_ISPCON_ET_ENUM;

  2752. typedef enum
  2753. {
  2754. FMC_ISPCON_ISPEN = 0,//ISP使能
  2755. FMC_ISPCON_BS = 1,//启动选择(1=由LDROM启动,0=由APROM启动)
  2756. FMC_ISPCON_CFGUEN = 4,//使能由ISP更新配置位(1 = 使能ISP更新配置位,0 = 禁止ISP更新配置位)
  2757. FMC_ISPCON_LDUEN = 5,//LDROM更新使能(1 = MCU在APROM中运行时,LDROM 被更新)
  2758. FMC_ISPCON_ISPFF = 6,//ISP失败标志(写1清标志)
  2759. FMC_ISPCON_SWRST = 7,//软件复位(写1执行软件复位,复位完成后由硬件清零)
  2760. FMC_ISPCON_PT = 8,//Flash编程时间(000:40uS,45uS,50uS,55uS,20uS,25uS,30uS,35uS)
  2761. FMC_ISPCON_ET = 12 //Flash擦除时间(000:20uS,25uS,30uS,35uS,3uS,5uS,10uS,15uS)
  2762. }NU_FMC_ISPCON_ENUM;

  2763. typedef volatile union
  2764. {
  2765. NU_REG Regs;
  2766. FMC_ISPCON_T Bits;
  2767. }NU_FMC_ISPCON_T;
  2768. //----------------------------------------------------//
  2769. typedef enum
  2770. {
  2771. FMC_ISPCMD_Standby = 0x30,//待机
  2772. FMC_ISPCMD_Read = 0x00,//读
  2773. FMC_ISPCMD_Program = 0x21,//编程
  2774. FMC_ISPCMD_PageErase = 0x22,//页擦除
  2775. FMC_ISPCMD_ReadCID = 0x0b,//读CID
  2776. FMC_ISPCMD_ReadDID = 0x0c,//读DID
  2777. }NU_FMC_ISPCMD_TABLE_ENUM;

  2778. typedef enum
  2779. {
  2780. FMC_ISPCMD_FCTRL = 0,//
  2781. FMC_ISPCMD_FCEN = 4,//
  2782. FMC_ISPCMD_FOEN = 5//
  2783. }NU_FMC_ISPCMD_ENUM;

  2784. typedef volatile union
  2785. {
  2786. NU_REG Regs;
  2787. FMC_ISPCMD_T Bits;
  2788. }NU_FMC_ISPCMD_T;
  2789. //----------------------------------------------------//
  2790. typedef enum
  2791. {
  2792. FMC_ISPTRG_ISPGO = 0//ISP开始触发(写1开始ISP操作,当ISP操作结束后,该位由硬件自动清零)
  2793. }NU_FMC_ISPTRG_ENUM;

  2794. typedef volatile union
  2795. {
  2796. NU_REG Regs;
  2797. FMC_ISPTRG_T Bits;
  2798. }NU_FMC_ISPTRG_T;
  2799. //----------------------------------------------------//
  2800. typedef enum
  2801. {
  2802. FMC_FATCON_FATS_40nS = 0,//
  2803. FMC_FATCON_FATS_50nS = 1,//
  2804. FMC_FATCON_FATS_60nS = 2,//
  2805. FMC_FATCON_FATS_70nS = 3,//
  2806. FMC_FATCON_FATS_80nS = 4,//
  2807. FMC_FATCON_FATS_90nS = 5,//
  2808. FMC_FATCON_FATS_100nS = 6,//
  2809. FMC_FATCON_FATS_RESERVE = 7//
  2810. }NU_FMC_FATCON_FATS_ENUM;

  2811. typedef enum
  2812. {
  2813. FMC_FATCON_FPSEN = 0,//Flash 省电使能(1 = 使能FLASH省电功能)
  2814. FMC_FATCON_FATS = 1,//FLASH访问时间窗口选择
  2815. FMC_FATCON_L_SPEED = 4//
  2816. }NU_FMC_FATCON_ENUM;

  2817. typedef volatile union
  2818. {
  2819. NU_REG Regs;
  2820. FMC_FATCON_T Bits;
  2821. }NU_FMC_FATCON_T;
  2822. //----------------------------------------------------//
  2823. typedef struct
  2824. {
  2825. __IO NU_FMC_ISPCON_T ISPCON;//ISP控制寄存器
  2826. __IO NU_REG_BITs ISPADR;//ISP地址寄存器
  2827. __IO NU_REG_BITs ISPDAT;//ISP数据寄存器
  2828. __IO NU_FMC_ISPCMD_T ISPCMD;//ISP命令寄存器
  2829. __IO NU_FMC_ISPTRG_T ISPTRG;//ISP触发控制寄存器
  2830. __IO NU_REG_BITs DFBADR;//数据FLASH基地址(该寄存器为数据FLASH开始地址寄存器,只读)
  2831. __IO FMC_FATCON_T FATCON;//Flash访问时间控制寄存器
  2832. }NU_FMC_T;
  2833. //----------------------------------------------------//
  2834. #define FMCs (*((NU_FMC_T *) FMC_BASE))//定位全局结构变量FMCs
  2835. //----------------------------------------------------//
  2836. #define FMCx ((NU_FMC_T *) FMC_BASE)
  2837. //----------------------------------------------------//
  2838. #ifdef __NUC1xx_H__
  2839. typedef enum
  2840. {
  2841. PS2_CON_PS2EN = 0,//使能 PS2 设备
  2842. PS2_CON_TXINTEN = 1,//使能传输中断
  2843. PS2_CON_RXINTEN = 2,//使能接收中断
  2844. PS2_CON_TXFIFO_DEPTH = 3,//FIFO 传输数据长度
  2845. PS2_CON_ACK = 7,//应答使能
  2846. PS2_CON_CLRFIFO = 8,//清 TX FIFO
  2847. PS2_CON_OVERRIDE = 9,//软件无视PS2 CLK/DATA Pin 状态
  2848. PS2_CON_FPS2CLK = 10,//Force PS2CLK Line
  2849. PS2_CON_FPS2DAT = 11,//Force PS2DATA Line
  2850. }NU_PS2_CON_ENUM;

  2851. typedef volatile union
  2852. {
  2853. NU_REG Regs;
  2854. PS2_CON_T Bits;
  2855. }NU_PS2_CON_T;
  2856. //----------------------------------------------------//
  2857. typedef enum
  2858. {
  2859. PS2_STATUS_BYTEIDX_TXDATA0_0_7 = 0,//TXDATA0[7:0]
  2860. PS2_STATUS_BYTEIDX_TXDATA0_8_15 = 1,//TXDATA0[15:8]
  2861. PS2_STATUS_BYTEIDX_TXDATA0_16_23 = 2,//TXDATA0[23:16]
  2862. PS2_STATUS_BYTEIDX_TXDATA0_24_31 = 3,//TXDATA0[31:24]
  2863. PS2_STATUS_BYTEIDX_TXDATA1_0_7 = 4,//TXDATA1[7:0]
  2864. PS2_STATUS_BYTEIDX_TXDATA1_8_15 = 5,//TXDATA1[15:8]
  2865. PS2_STATUS_BYTEIDX_TXDATA1_16_23 = 6,//TXDATA1[23:16]
  2866. PS2_STATUS_BYTEIDX_TXDATA1_24_31 = 7,//TXDATA1[31:24]
  2867. PS2_STATUS_BYTEIDX_TXDATA2_0_7 = 8,//TXDATA2[7:0]
  2868. PS2_STATUS_BYTEIDX_TXDATA2_8_15 = 9,//TXDATA2[15:8]
  2869. PS2_STATUS_BYTEIDX_TXDATA2_16_23 = 10,//TXDATA2[23:16]
  2870. PS2_STATUS_BYTEIDX_TXDATA2_24_31 = 11,//TXDATA2[31:24]
  2871. PS2_STATUS_BYTEIDX_TXDATA3_0_7 = 12,//TXDATA3[7:0]
  2872. PS2_STATUS_BYTEIDX_TXDATA3_8_15 = 13,//TXDATA3[15:8]
  2873. PS2_STATUS_BYTEIDX_TXDATA3_16_23 = 14,//TXDATA3[23:16]
  2874. PS2_STATUS_BYTEIDX_TXDATA3_24_31 = 15,//TXDATA3[31:24]
  2875. }NU_PS2_STATUS_BYTEIDX_ENUM;

  2876. typedef enum
  2877. {
  2878. PS2_STATUS_PS2CLK = 0,//CLK Pin 状态
  2879. PS2_STATUS_PS2DATA = 1,//DATA Pin状态
  2880. PS2_STATUS_FRAMERR = 2,//帧错误
  2881. PS2_STATUS_RXPARTY = 3,//接收奇偶
  2882. PS2_STATUS_RXBUSY = 4,//接收忙
  2883. PS2_STATUS_TXBUSY = 5,//发送忙
  2884. PS2_STATUS_RXOVF = 6,//RX Buffer 改写
  2885. PS2_STATUS_TXEMPTY = 7,//TX FIFO 空
  2886. PS2_STATUS_BYTEIDX = 8,//字节目录
  2887. }NU_PS2_STATUS_ENUM;

  2888. typedef volatile union
  2889. {
  2890. NU_REG Regs;
  2891. PS2_STATUS_T Bits;
  2892. }NU_PS2_STATUS_T;
  2893. //----------------------------------------------------//
  2894. typedef enum
  2895. {
  2896. PS2_INTID_RXINT = 0,//传输中断(当应答位发送,该位置位.如果 RXINTEN置 1,中断产生.写 1 清该位为 0)
  2897. PS2_INTID_TXINT = 1,//接收中断(当 STOP 位传输后,该位置 1. 如果 TXINTEN 位置 1,中断产生.写 1 清该位为 0)
  2898. }NU_PS2_INTID_ENUM;

  2899. typedef struct
  2900. {
  2901. __IO NU_REG TXINT:1;
  2902. __IO NU_REG RXINT:1;
  2903. __I NU_REG RESERVE:30;
  2904. }NU_PS2_INTID_Bits;

  2905. typedef volatile union
  2906. {
  2907. NU_REG Regs;
  2908. NU_PS2_INTID_Bits Bits;
  2909. }NU_PS2_INTID_T;
  2910. //----------------------------------------------------//
  2911. typedef struct
  2912. {
  2913. __IO NU_PS2_CON_T PS2CON;//PS2控制寄存器
  2914. union{
  2915. __IO NU_REG_BITs TXDATA[4];//PS2发送数据寄存器数组0~3
  2916. struct{
  2917. __IO NU_REG_BITs TXDATA0;//PS2发送数据寄存器0
  2918. __IO NU_REG_BITs TXDATA1;//PS2发送数据寄存器1
  2919. __IO NU_REG_BITs TXDATA2;//PS2发送数据寄存器2
  2920. __IO NU_REG_BITs TXDATA3;//PS2发送数据寄存器3
  2921. };
  2922. };
  2923. __IO NU_REG_BITs RXDATA;//PS2接收数据寄存器
  2924. __IO NU_PS2_STATUS_T STATUS;//PS2状态寄存器
  2925. __IO NU_PS2_INTID_T INTID;//PS2中断识别寄存器
  2926. }NU_PS2_T;

  2927. //----------------------------------------------------//
  2928. #define PS2s (*((NU_PS2_T *) PS2_BASE))//定位全局结构变量PS2s
  2929. //----------------------------------------------------//
  2930. #define PS2x ((NU_PS2_T *) PS2_BASE)
  2931. #endif
  2932. //----------------------------------------------------//
  2933. #ifdef __NUC1xx_H__
  2934. typedef enum
  2935. {
  2936. CAN_OPMODE_RSTM = 0,//复位模式
  2937. CAN_OPMODE_LOM = 1//Listen Only Mode
  2938. }NU_CAN_OPMODE_ENUM;

  2939. typedef volatile union
  2940. {
  2941. NU_REG Regs;
  2942. CAN_OPMODE_T Bits;
  2943. }NU_CAN_OPMODE_T;
  2944. //----------------------------------------------------//
  2945. typedef enum
  2946. {
  2947. CAN_CMD_TXREQ = 0,//传输请求
  2948. CAN_CMD_ABRT = 1,//中断自动重传输功能
  2949. CAN_CMD_OVERFLOAD_EN = 5,//
  2950. CAN_CMD_WAKEUP_EN = 6,//唤醒使能
  2951. CAN_CMD_CAN_EN = 7,//CAN BUS 使能
  2952. }NU_CAN_CMD_ENUM;

  2953. typedef volatile union
  2954. {
  2955. NU_REG Regs;
  2956. CAN_CMD_T Bits;
  2957. }NU_CAN_CMD_T;
  2958. //----------------------------------------------------//
  2959. typedef enum
  2960. {
  2961. CAN_BUSSTS_TXCOMPLET = 3,//传输完成状态标志
  2962. CAN_BUSSTS_RXSTS = 4,//接收状态标志
  2963. CAN_BUSSTS_TXSTS = 5,//发送状态标志
  2964. CAN_BUSSTS_BUSIDLE = 6,//总线空闲状态标志
  2965. CAN_BUSSTS_BUSOFF = 7,//总线ON/OFF 状态
  2966. CAN_BUSSTS_EACTIVE = 8,//Error 主动状态
  2967. CAN_BUSSTS_EPASSIVE = 9,//Error 被动状态
  2968. }NU_CAN_BUSSTS_ENUM;

  2969. typedef volatile union
  2970. {
  2971. NU_REG Regs;
  2972. CAN_BUSSTS_T Bits;
  2973. }NU_CAN_BUSSTS_T;
  2974. //----------------------------------------------------//
  2975. typedef enum
  2976. {
  2977. CAN_INTR_RI = 0,//接收中断标志
  2978. CAN_INTR_TI = 1,//发送中断标志
  2979. CAN_INTR_WUI = 4,//Wake-Up 中断标志
  2980. CAN_INTR_ALI = 6,//Arbitration Lost 中断标志
  2981. CAN_INTR_BEI = 7//总线Error 中断标志
  2982. }NU_CAN_INTR_ENUM;

  2983. typedef volatile union
  2984. {
  2985. NU_REG Regs;
  2986. CAN_INTR_T Bits;
  2987. }NU_CAN_INTR_T;
  2988. //----------------------------------------------------//
  2989. typedef enum
  2990. {
  2991. CAN_INTEN_RIE = 0,//接收中断使能
  2992. CAN_INTEN_TIE = 1,//发送中断使能
  2993. CAN_INTEN_WUIE = 4,//Wake-Up 中断使能
  2994. CAN_INTEN_ALIE = 6,//Arbitration Lost 中断使能
  2995. CAN_INTEN_BEIE = 7//总线Error 中断使能
  2996. }NU_CAN_INTEN_ENUM;

  2997. typedef volatile union
  2998. {
  2999. NU_REG Regs;
  3000. CAN_INTEN_T Bits;
  3001. }NU_CAN_INTEN_T;
  3002. //----------------------------------------------------//
  3003. typedef enum
  3004. {
  3005. CAN_BTIMR_BRP = 0,//
  3006. CAN_BTIMR_SJW = 4,//同步跳转宽度
  3007. CAN_BTIMR_TSEG1 = 6,//时间区域 1
  3008. CAN_BTIMR_TSEG2 = 11,//时间区域2
  3009. CAN_BTIMR_SAMP = 15,//取样点数量
  3010. }NU_CAN_BTIMR_ENUM;

  3011. typedef volatile union
  3012. {
  3013. NU_REG Regs;
  3014. CAN_BTIMR_T Bits;
  3015. }NU_CAN_BTIMR_T;
  3016. //----------------------------------------------------//
  3017. typedef enum
  3018. {
  3019. CAN_ERRCR_BIT_ERR = 0,//Bit Error
  3020. CAN_ERRCR_ACK_ERR = 1,//应答错误
  3021. CAN_ERRCR_CRC_ERR = 2,//CRC 错误
  3022. CAN_ERRCR_FORM_ERR = 3,//Form 错误
  3023. CAN_ERRCR_STUFF_ERR = 4,//Stuff 错误
  3024. CAN_ERRCR_ID11_NM = 5,//ID11 无匹配状态
  3025. CAN_ERRCR_ID18_NM = 6,//ID18 无匹配状态
  3026. }NU_CAN_ERRCR_ENUM;

  3027. typedef volatile union
  3028. {
  3029. NU_REG Regs;
  3030. CAN_ERRCR_T Bits;
  3031. }NU_CAN_ERRCR_T;
  3032. //----------------------------------------------------//
  3033. typedef enum
  3034. {
  3035. CAN_RECNTR_RECNT = 0//RX error 接收寄存器 反映当前接收到的 error 计数器
  3036. }NU_CAN_RECNTR_ENUM;

  3037. typedef volatile union
  3038. {
  3039. NU_REG Regs;
  3040. CAN_RECNTR_T Bits;
  3041. }NU_CAN_RECNTR_T;
  3042. //----------------------------------------------------//
  3043. typedef enum
  3044. {
  3045. CAN_TECNTR_TECNT = 0//发送错误计数器寄存器 反映当前传输 error 计数器的值
  3046. }NU_CAN_TECNTR_ENUM;

  3047. typedef volatile union
  3048. {
  3049. NU_REG Regs;
  3050. CAN_TECNTR_T Bits;
  3051. }NU_CAN_TECNTR_T;
  3052. //----------------------------------------------------//
  3053. typedef enum
  3054. {
  3055. CAN_TXFINFO_TXDLC = 0,//发送数据长度码
  3056. CAN_TXFINFO_TXRTR = 6,//远端传输请求(1 = 传输格式为 REMOTE FRAME (标准格式同扩展格式))
  3057. CAN_TXFINFO_TXFF = 7//发送祯格式(1 = 传输格式为扩展模式,0 =传输格式为标准模式)
  3058. }NU_CAN_TXFINFO_ENUM;

  3059. typedef volatile union
  3060. {
  3061. NU_REG Regs;
  3062. CAN_TXFINFO_T Bits;
  3063. }NU_CAN_TXFINFO_T;
  3064. //----------------------------------------------------//
  3065. typedef enum
  3066. {
  3067. CAN_TXIDR_TXID = 3//发送标示符(TXID[31:21] 为 11-bit 标志符 应用于标准格式,TX[31:3] is the29-bit 标志符 应用于扩展格式)
  3068. }NU_CAN_TXIDR_ENUM;

  3069. typedef volatile union
  3070. {
  3071. NU_REG Regs;
  3072. CAN_TXIDR_T Bits;
  3073. }NU_CAN_TXIDR_T;
  3074. //----------------------------------------------------//
  3075. typedef enum
  3076. {
  3077. CAN_TXDATA_TXDATA1 = 0,//发送数据缓存1
  3078. CAN_TXDATA_TXDATA2 = 8,//发送数据缓存2
  3079. CAN_TXDATA_TXDATA3 = 16,//发送数据缓存3
  3080. CAN_TXDATA_TXDATA4 = 24,//发送数据缓存4
  3081. CAN_TXDATA_TXDATA5 = 0,//发送数据缓存5
  3082. CAN_TXDATA_TXDATA6 = 8,//发送数据缓存6
  3083. CAN_TXDATA_TXDATA7 = 16,//发送数据缓存7
  3084. CAN_TXDATA_TXDATA8 = 24,//发送数据缓存8
  3085. }NU_CAN_TXDATA_ENUM;
  3086. //----------------------------------------------------//
  3087. typedef enum
  3088. {
  3089. CAN_TXDATA_A_TXDATA1 = 0,//发送数据缓存1
  3090. CAN_TXDATA_A_TXDATA2 = 8,//发送数据缓存2
  3091. CAN_TXDATA_A_TXDATA3 = 16,//发送数据缓存3
  3092. CAN_TXDATA_A_TXDATA4 = 24,//发送数据缓存4
  3093. }NU_CAN_TXDATA_A_ENUM;

  3094. typedef struct
  3095. {
  3096. __IO NU_REG TXDATA1:8;
  3097. __IO NU_REG TXDATA2:8;
  3098. __IO NU_REG TXDATA3:8;
  3099. __IO NU_REG TXDATA4:8;
  3100. }NU_CAN_TXDATA_A_Bits;

  3101. typedef volatile union
  3102. {
  3103. NU_REG Regs;
  3104. NU_CAN_TXDATA_A_Bits Bits;
  3105. }NU_CAN_TXDATA_A_T;
  3106. //----------------------------------------------------//
  3107. typedef enum
  3108. {
  3109. CAN_TXDATA_B_TXDATA5 = 0,//发送数据缓存5
  3110. CAN_TXDATA_B_TXDATA6 = 8,//发送数据缓存6
  3111. CAN_TXDATA_B_TXDATA7 = 16,//发送数据缓存7
  3112. CAN_TXDATA_B_TXDATA8 = 24,//发送数据缓存8
  3113. }NU_CAN_TXDATA_B_ENUM;

  3114. typedef struct
  3115. {
  3116. __IO NU_REG TXDATA5:8;
  3117. __IO NU_REG TXDATA6:8;
  3118. __IO NU_REG TXDATA7:8;
  3119. __IO NU_REG TXDATA8:8;
  3120. }NU_CAN_TXDATA_B_Bits;

  3121. typedef volatile union
  3122. {
  3123. NU_REG Regs;
  3124. NU_CAN_TXDATA_B_Bits Bits;
  3125. }NU_CAN_TXDATA_B_T;
  3126. //----------------------------------------------------//
  3127. typedef enum
  3128. {
  3129. CAN_RXFINFO_RXDLC = 0,//接收数据长度码
  3130. CAN_RXFINFO_RXRTR = 6,//远端接收传输请求位
  3131. CAN_RXFINFO_RXIDE = 7,//接收标示扩展位
  3132. }NU_CAN_RXFINFO_ENUM;

  3133. typedef volatile union
  3134. {
  3135. NU_REG Regs;
  3136. CAN_RXFINFO_T Bits;
  3137. }NU_CAN_RXFINFO_T;
  3138. //----------------------------------------------------//
  3139. typedef enum
  3140. {
  3141. CAN_RXIDR_RXID = 3//接收标志(RXID[28:18] 为 11-bit 标志符 用于标准模式)
  3142. }NU_CAN_RXIDR_ENUM;

  3143. typedef volatile union
  3144. {
  3145. NU_REG Regs;
  3146. CAN_RXIDR_T Bits;
  3147. }NU_CAN_RXIDR_T;
  3148. //----------------------------------------------------//
  3149. typedef enum
  3150. {
  3151. CAN_RXDATA_RXDATA1 = 0,//接收数据缓存1
  3152. CAN_RXDATA_RXDATA2 = 8,//接收数据缓存2
  3153. CAN_RXDATA_RXDATA3 = 16,//接收数据缓存3
  3154. CAN_RXDATA_RXDATA4 = 24,//接收数据缓存4
  3155. CAN_RXDATA_RXDATA5 = 0,//接收数据缓存5
  3156. CAN_RXDATA_RXDATA6 = 8,//接收数据缓存6
  3157. CAN_RXDATA_RXDATA7 = 16,//接收数据缓存7
  3158. CAN_RXDATA_RXDATA8 = 24,//接收数据缓存8
  3159. }NU_CAN_RXDATA_ENUM;
  3160. //----------------------------------------------------//
  3161. typedef enum
  3162. {
  3163. CAN_RXDATA_A_RXDATA1 = 0,//接收数据缓存1
  3164. CAN_RXDATA_A_RXDATA2 = 8,//接收数据缓存2
  3165. CAN_RXDATA_A_RXDATA3 = 16,//接收数据缓存3
  3166. CAN_RXDATA_A_RXDATA4 = 24,//接收数据缓存4
  3167. }NU_CAN_RXDATA_A_ENUM;

  3168. typedef struct
  3169. {
  3170. __IO NU_REG RXDATA1:8;
  3171. __IO NU_REG RXDATA2:8;
  3172. __IO NU_REG RXDATA3:8;
  3173. __IO NU_REG RXDATA4:8;
  3174. }NU_CAN_RXDATA_A_Bits;

  3175. typedef volatile union
  3176. {
  3177. NU_REG Regs;
  3178. NU_CAN_RXDATA_A_Bits Bits;
  3179. }NU_CAN_RXDATA_A_T;
  3180. //----------------------------------------------------//
  3181. typedef enum
  3182. {
  3183. CAN_RXDATA_B_RXDATA5 = 0,//接收数据缓存5
  3184. CAN_RXDATA_B_RXDATA6 = 8,//接收数据缓存6
  3185. CAN_RXDATA_B_RXDATA7 = 16,//接收数据缓存7
  3186. CAN_RXDATA_B_RXDATA8 = 24,//接收数据缓存8
  3187. }NU_CAN_RXDATA_B_ENUM;

  3188. typedef struct
  3189. {
  3190. __IO NU_REG RXDATA5:8;
  3191. __IO NU_REG RXDATA6:8;
  3192. __IO NU_REG RXDATA7:8;
  3193. __IO NU_REG RXDATA8:8;
  3194. }NU_CAN_RXDATA_B_Bits;

  3195. typedef volatile union
  3196. {
  3197. NU_REG Regs;
  3198. NU_CAN_RXDATA_B_Bits Bits;
  3199. }NU_CAN_RXDATA_B_T;
  3200. //----------------------------------------------------//
  3201. typedef enum
  3202. {
  3203. CAN_ACR_ACRID = 3//ACR[31:21] 应用于识别 11-bit 接收信息.ACR[20:3] 应用于识别 18-bit 接收信息
  3204. }NU_CAN_ACR_ENUM;

  3205. typedef volatile union
  3206. {
  3207. NU_REG Regs;
  3208. CAN_ACR_T Bits;
  3209. }NU_CAN_ACR_T;
  3210. //----------------------------------------------------//
  3211. typedef enum
  3212. {
  3213. CAN_AMR_AMRID = 3//AMR[31:21] 应用于识别 11-bit 接收信息.AMR[20:3] 应用于识别 18-bit 接收信息
  3214. }NU_CAN_AMR_ENUM;

  3215. typedef volatile union
  3216. {
  3217. NU_REG Regs;
  3218. CAN_AMR_T Bits;
  3219. }NU_CAN_AMR_T;
  3220. //----------------------------------------------------//
  3221. typedef struct
  3222. {
  3223. __IO NU_CAN_OPMODE_T OPMODE;//CAN总线操作模式寄存器
  3224. __IO NU_CAN_CMD_T CMD;//命令寄存器
  3225. __IO NU_CAN_BUSSTS_T BUSSTS;//总线状态寄存器
  3226. __IO NU_CAN_INTR_T INTR;//中断状态寄存器

  3227. __IO NU_CAN_INTEN_T INTEN;//中断使能寄存器
  3228. __IO NU_CAN_BTIMR_T BTIMR;//总线位时序寄存器
  3229. __I NU_REG PROTECT[2];//保留
  3230. __IO NU_CAN_ERRCR_T ERRCR;//错误捕捉寄存器
  3231. __I NU_REG PROTECT1;//保留
  3232. __IO NU_CAN_RECNTR_T RECNTR;//接收错误计数寄存器
  3233. __IO NU_CAN_TECNTR_T TECNTR;//发送错误计数寄存器

  3234. __IO NU_CAN_TXFINFO_T TXFINFO;//发送祯信息寄存器
  3235. __IO NU_CAN_TXIDR_T TXIDR;//发送标示符寄存器
  3236. union{
  3237. __IO NU_REG_BITs TXDATA[2];//发送数据AB寄存器数组
  3238. struct{
  3239. __IO NU_REG_BITs TXDATA_A;//发送数据A寄存器
  3240. __IO NU_REG_BITs TXDATA_B;//发送数据B寄存器
  3241. };
  3242. };

  3243. __IO NU_CAN_RXFINFO_T RXFINFO;//接收祯信息寄存器
  3244. __IO NU_CAN_RXIDR_T RXIDR;//接收标志寄存器
  3245. union{
  3246. __IO NU_REG_BITs RX_DATA[2];//接收数据AB寄存器数组(晕!!!多了_)
  3247. struct{
  3248. __IO NU_CAN_RXDATA_A_T RX_DATA_A;//接收数据A寄存器
  3249. __IO NU_CAN_RXDATA_B_T RX_DATA_B;//接收数据B寄存器
  3250. };
  3251. __IO NU_REG_BITs RXDATA[2];//接收数据AB寄存器数组
  3252. struct{
  3253. __IO NU_CAN_RXDATA_A_T RXDATA_A;//接收数据A寄存器
  3254. __IO NU_CAN_RXDATA_B_T RXDATA_B;//接收数据B寄存器
  3255. };
  3256. };
  3257. __IO NU_CAN_ACR_T ACR;//验收代码寄存器
  3258. __IO NU_CAN_AMR_T AMR;//验收屏蔽寄存器
  3259. }NU_CAN_T;

  3260. //----------------------------------------------------//
  3261. #define CANs (*((NU_CAN_T *) CAN_BASE))//定位全局结构变量CANs
  3262. //----------------------------------------------------//
  3263. #define CANx ((NU_CAN_T *) CAN_BASE)
  3264. #endif
  3265. //----------------------------------------------------//
  3266. #ifdef __NUC1xx_H__
  3267. typedef enum
  3268. {
  3269. USBD_INTEN_BUS = 0,//1/0使能/禁止BUS事件中断
  3270. USBD_INTEN_USB = 1,//1/0 使能/禁止USB事件中断
  3271. USBD_INTEN_FLD = 2,//1/0使能/禁止 浮动检测中断
  3272. USBD_INTEN_WAKEUP = 3,//1/0 使能/禁止 唤醒功能
  3273. USBD_INTEN_WAKEUP_EN = 8,//1/0 使能/禁止USB 唤醒功能
  3274. USBD_INTEN_INNAK_EN = 15,//1/0 在接到IN标志后,设备响应NAK,使能/禁止中断
  3275. }NU_USBD_INTEN_ENUM;

  3276. typedef volatile union
  3277. {
  3278. NU_REG Regs;
  3279. USBD_INTEN_T Bits;
  3280. }NU_USBD_INTEN_T;
  3281. //----------------------------------------------------//
  3282. typedef enum
  3283. {
  3284. USBD_INTSTS_BUS = 0,//Bus 事件发生,通过ATTR[3:0]可知是哪类Bus事件发生,向EVF[0]写1清标志
  3285. USBD_INTSTS_USB = 1,//USB 事件发生,通过STS[6:4]可知是哪类USB事件发生
  3286. USBD_INTSTS_FLD = 2,//浮动检测事件发生,向EVF[2]写1 清标志
  3287. USBD_INTSTS_WAKEUP = 3,//唤醒事件发生,向EVF[3]写1 清标志
  3288. USBD_INTSTS_EPTF = 16,//1 = USB事件发生,通过STS[xxxx]可知是哪类USB事件发生
  3289. USBD_INTSTS_SETUP = 31,//1 = Setup事件发生,向EVF[31]写1清标志
  3290. }NU_USBD_INTSTS_ENUM;

  3291. typedef volatile union
  3292. {
  3293. NU_REG Regs;
  3294. USBD_INTSTS_T Bits;
  3295. }NU_USBD_INTSTS_T;
  3296. //----------------------------------------------------//
  3297. typedef enum
  3298. {
  3299. USBD_FADDR_FADDR = 0//USB设备的功能地址
  3300. }NU_USBD_FADDR_ENUM;

  3301. typedef volatile union
  3302. {
  3303. NU_REG Regs;
  3304. USBD_FADDR_T Bits;
  3305. }NU_USBD_FADDR_T;
  3306. //----------------------------------------------------//
  3307. typedef enum
  3308. {
  3309. USBD_EPSTS_OVERRUN = 7,//输出数据超过最大有效载荷或安装数据超过8字节
  3310. USBD_EPSTS_EPSTS0 = 8,//端点0的系统状态(000=In ACK~111=同步传输结束)
  3311. USBD_EPSTS_EPSTS1 = 11,//端点1的系统状态(000=In ACK~111=同步传输结束)
  3312. USBD_EPSTS_EPSTS2 = 14,//端点2的系统状态(000=In ACK~111=同步传输结束)
  3313. USBD_EPSTS_EPSTS3 = 17,//端点3的系统状态(000=In ACK~111=同步传输结束)
  3314. USBD_EPSTS_EPSTS4 = 20,//端点4的系统状态(000=In ACK~111=同步传输结束)
  3315. USBD_EPSTS_EPSTS5 = 23,//端点5的系统状态(000=In ACK~111=同步传输结束)
  3316. }NU_USBD_EPSTS_ENUM;

  3317. typedef volatile union
  3318. {
  3319. NU_REG Regs;
  3320. USBD_EPSTS_T Bits;
  3321. }NU_USBD_EPSTS_T;
  3322. //----------------------------------------------------//
  3323. typedef enum
  3324. {
  3325. USBD_ATTR_USBRST = 0,//SE0(single-ended 0) 超过2.5uS,总线复位.
  3326. USBD_ATTR_SUSPEND = 1,//Bus空闲超过3mS,表示 要么电缆没连接,要么主机正在休眠.
  3327. USBD_ATTR_RESUME = 2,//从暂停中恢复
  3328. USBD_ATTR_TIMEOUT = 3,//无响应超过18位时间
  3329. USBD_ATTR_PHY_EN = 4,//使能 PHY
  3330. USBD_ATTR_RWAKEUP = 5,//使USB总线处于K状态,以便远程唤醒.
  3331. USBD_ATTR_USB_EN = 7,//使能 USB
  3332. USBD_ATTR_DPPU_EN = 8,//使能 DP上拉电阻
  3333. USBD_ATTR_PDB = 9,//掉电 PHY, 低电平有效
  3334. }NU_USBD_ATTR_ENUM;

  3335. typedef volatile union
  3336. {
  3337. NU_REG Regs;
  3338. USBD_ATTR_T Bits;
  3339. }NU_USBD_ATTR_T;
  3340. //----------------------------------------------------//
  3341. typedef enum
  3342. {
  3343. USBD_FLDET_FLDET = 0//1/0: 连接/悬空
  3344. }NU_USBD_FLDET_ENUM;

  3345. typedef volatile union
  3346. {
  3347. NU_REG Regs;
  3348. USBD_FLDET_T Bits;
  3349. }NU_USBD_FLDET_T;
  3350. //----------------------------------------------------//
  3351. typedef enum
  3352. {
  3353. USBD_BUFSEG_BUFSEG = 3//仅用于标记设置(总线缓冲有效的开始地址= {BUFSEG[8:3], 3’b000})
  3354. }NU_USBD_BUFSEG_ENUM;

  3355. typedef volatile union
  3356. {
  3357. NU_REG Regs;
  3358. USBD_BUFSEG_T Bits;
  3359. }NU_USBD_BUFSEG_T;
  3360. //----------------------------------------------------//
  3361. typedef enum
  3362. {
  3363. USBD_EP_BUFSEG_BUFSEG = 0//USB缓冲有效的开始地址
  3364. }NU_USBD_EP_BUFSEG_ENUM;

  3365. typedef volatile union
  3366. {
  3367. NU_REG Regs;
  3368. USBD_BUFSEG_T Bits;
  3369. }NU_USBD_EP_BUFSEG_T;
  3370. //----------------------------------------------------//
  3371. typedef enum
  3372. {
  3373. USBD_EP_MXPLD_MXPLD = 0//ReadIN : 发送到主机的数据长度,OUT : 从主机接收到数据的实际长度.)
  3374. //WriteIN : 发送到主机的数据长度,OUT : 从主机接收到数据的最大长度
  3375. //注:一旦MXPLD被写,数据包将在IN/OUT标志到达之后立即发送/接收.
  3376. }NU_USBD_EP_MXPLD_ENUM;

  3377. typedef volatile union
  3378. {
  3379. NU_REG Regs;
  3380. USBD_MXPLD_T Bits;
  3381. }NU_USBD_EP_MXPLD_T;
  3382. //----------------------------------------------------//
  3383. typedef enum
  3384. {
  3385. USBD_EP_CFG_EPT = 0,//端点号
  3386. USBD_EP_CFG_ISOCH = 4,//同步,无握手
  3387. USBD_EP_CFG_STATE = 5,//状态(00 = 禁止端点01 = Out 端点10 = IN 端点11 = 无定义)
  3388. USBD_EP_CFG_DSQ = 7,//主机应答之后,IN标记自动指定为数据0或1.
  3389. USBD_EP_CFG_STALL_CTL = 9,//1 = 在setup阶段允许自动清stall
  3390. }NU_USBD_EP_CFG_ENUM;

  3391. typedef volatile union
  3392. {
  3393. NU_REG Regs;
  3394. USBD_CFG_T Bits;
  3395. }NU_USBD_EP_CFG_T;
  3396. //----------------------------------------------------//
  3397. typedef enum
  3398. {
  3399. USBD_EP_CFGP_CFGP = 0,//IN: 写 ‘1’ 清in ready (由MXPLD置1).OUT: 写 ‘1’清out ready(由MXPLD置1)
  3400. USBD_EP_CFGP_STALL = 1,//置1, 使设备响应STALL
  3401. }NU_USBD_EP_CFGP_ENUM;

  3402. typedef volatile union
  3403. {
  3404. NU_REG Regs;
  3405. USBD_CFGP_T Bits;
  3406. }NU_USBD_EP_CFGP_T;
  3407. //----------------------------------------------------//
  3408. typedef struct
  3409. {
  3410. __IO NU_USBD_EP_BUFSEG_T BUFSEG;//端点0~5的缓冲分割寄存器
  3411. __IO NU_USBD_EP_MXPLD_T MXPLD;//端点0~5的最大有效载荷寄存器
  3412. __IO NU_USBD_EP_CFG_T CFG;//端点0~5的配置寄存器
  3413. __IO NU_USBD_EP_CFGP_T CFGP;//端点0~5的额外配置寄存器
  3414. }NU_USBD_EP_T;
  3415. //----------------------------------------------------//
  3416. typedef enum
  3417. {
  3418. USBD_DRVSE0_DRVSE0 = 0//1/0: 驱动 se0/无
  3419. }NU_USBD_DRVSE0_ENUM;

  3420. typedef volatile union
  3421. {
  3422. NU_REG Regs;
  3423. USBD_DRVSE0_T Bits;
  3424. }NU_USBD_DRVSE0_T;
  3425. //----------------------------------------------------//
  3426. typedef enum
  3427. {
  3428. USBD_PDMA_PDMA_RW = 0,//0 = 从内存读数据到USB缓存,1 = 从USB缓存读数据到内存
  3429. USBD_PDMA_PDMA_EN = 0//0 = 禁止PDMA,1 = 使能PDMA,该位在PDMA传输完毕后自动清零.
  3430. }NU_USBD_PDMA_ENUM;

  3431. typedef volatile union
  3432. {
  3433. NU_REG Regs;
  3434. USBD_PDMA_T Bits;
  3435. }NU_USBD_PDMA_T;
  3436. //----------------------------------------------------//
  3437. typedef struct
  3438. {
  3439. __IO NU_USBD_INTEN_T INTEN;//中断使能寄存器
  3440. __IO NU_USBD_INTSTS_T INTSTS;//中断事件标志寄存器
  3441. __IO NU_USBD_FADDR_T FADDR;//功能地址寄存器
  3442. __IO NU_USBD_EPSTS_T EPSTS;//系统状态寄存器
  3443. __IO NU_USBD_ATTR_T ATTR;//总线状态&归属寄存器
  3444. __I NU_USBD_FLDET_T FLDET;//悬空检测寄存器
  3445. __IO NU_USBD_BUFSEG_T BUFSEG;//缓冲分割寄存器
  3446. __I NU_REG RESERVE0;
  3447. union{
  3448. __IO NU_USBD_EP_T EP[6];//端点数组0~5
  3449. struct{
  3450. __IO NU_USBD_EP_T EP0;//端点0
  3451. __IO NU_USBD_EP_T EP1;//端点1
  3452. __IO NU_USBD_EP_T EP2;//端点2
  3453. __IO NU_USBD_EP_T EP3;//端点3
  3454. __IO NU_USBD_EP_T EP4;//端点4
  3455. __IO NU_USBD_EP_T EP5;//端点5
  3456. };
  3457. };
  3458. __I NU_REG RESERVE1[4];
  3459. __IO NU_USBD_DRVSE0_T DRVSE0;//驱动SE0寄存器(1/0: 驱动 se0/无)
  3460. __I NU_REG RESERVE2[4];
  3461. __IO NU_USBD_PDMA_T PDMA;//PDMA 控制寄存器
  3462. }NU_USBD_T;

  3463. //----------------------------------------------------//
  3464. #define USBDs (*((NU_USBD_T *) USBD_BASE))//定位全局结构变量USBDs
  3465. //----------------------------------------------------//
  3466. #define USBDx ((NU_USBD_T *) USBD_BASE)
  3467. #endif
  3468. //----------------------------------------------------//
  3469. #ifdef __NUC1xx_H__
  3470. typedef enum
  3471. {
  3472. I2S_CON_WORDWIDTH_8Bit = 0,//
  3473. I2S_CON_WORDWIDTH_16Bit = 1,//
  3474. I2S_CON_WORDWIDTH_24Bit = 2,//
  3475. I2S_CON_WORDWIDTH_32Bit = 3,//
  3476. }NU_I2S_CON_WORDWIDTH_ENUM;
  3477. typedef enum
  3478. {
  3479. I2S_CON_I2SEN = 0,//使能I2S 控制器
  3480. I2S_CON_TXEN = 1,//发送使能
  3481. I2S_CON_RXEN = 2,//接收使能
  3482. I2S_CON_MUTE = 3,//使能发送静音
  3483. I2S_CON_WORDWIDTH = 4,//字宽度
  3484. I2S_CON_MONO = 6,//单声道数据
  3485. I2S_CON_FORMAT = 7,//数据模式
  3486. I2S_CON_SLAVE = 8,//从机模式
  3487. I2S_CON_TXTH = 9,//发送FIFO的阈值水平
  3488. I2S_CON_RXTH = 12,//接收FIFO的阈值水平
  3489. I2S_CON_MCLKEN = 15,//使能主时钟
  3490. I2S_CON_RCHZCEN = 16,//使能右声道过零检测
  3491. I2S_CON_LCHZCEN = 17,//使能左声道过零检测
  3492. I2S_CON_CLR_TXFIFO = 18,//清发送FIFO
  3493. I2S_CON_CLR_RXFIFO = 19,//清接收FIFO
  3494. I2S_CON_TXDMA = 20,//使能 DMA发送
  3495. I2S_CON_RXDMA = 21,//使能DMA接收
  3496. }NU_I2S_CON_ENUM;

  3497. typedef volatile union
  3498. {
  3499. NU_REG Regs;
  3500. I2S_CON_T Bits;
  3501. }NU_I2S_CON_T;
  3502. //----------------------------------------------------//
  3503. typedef enum
  3504. {
  3505. I2S_CLKDIV_MCLK_DIV = 0,//主时钟分频
  3506. I2S_CLKDIV_BCLK_DIV = 8,//位时钟分频
  3507. }NU_I2S_CLKDIV_ENUM;

  3508. typedef volatile union
  3509. {
  3510. NU_REG Regs;
  3511. I2S_CLKDIV_T Bits;
  3512. }NU_I2S_CLKDIV_T;
  3513. //----------------------------------------------------//
  3514. typedef enum
  3515. {
  3516. I2S_IE_RXUDFIE = 0,//接收FIFO下溢中断使能
  3517. I2S_IE_RXOVFIE = 1,//接收FIFO溢出中断使能
  3518. I2S_IE_RXTHIE = 2,//接收FIFO阈值水平中断
  3519. I2S_IE_TXUDFIE = 8,//发送FIFO下溢中断使能
  3520. I2S_IE_TXOVFIE = 9,//发送FIFO溢出中断使能
  3521. I2S_IE_TXTHIE = 10,//发送FIFO 阈值水平中断使能
  3522. I2S_IE_RZCIE = 11,//右声道过零检测中断使能
  3523. I2S_IE_LZCIE = 12,//左声道过零检测中断使能
  3524. }NU_I2S_IE_ENUM;

  3525. typedef volatile union
  3526. {
  3527. NU_REG Regs;
  3528. I2S_IE_T Bits;
  3529. }NU_I2S_IE_T;
  3530. //----------------------------------------------------//
  3531. typedef enum
  3532. {
  3533. I2S_STATUS_I2SINT = 0,//I2S 中断标志
  3534. I2S_STATUS_I2SRXINT = 1,//I2S 发送中断
  3535. I2S_STATUS_I2STXINT = 2,//I2S 接收中断
  3536. I2S_STATUS_RIGHT = 3,//右声道
  3537. I2S_STATUS_RXUDF = 8,//接收FIFO下溢标志
  3538. I2S_STATUS_RXOVF = 9,//接收FIFO溢出标志
  3539. I2S_STATUS_RXTHF = 10,//接收FIFO开始标志
  3540. I2S_STATUS_RXFULL = 11,//接收FIFO空
  3541. I2S_STATUS_RXEMPTY = 12,//接收FIFO空
  3542. I2S_STATUS_TXUDF = 16,//发送FIFO下溢标志
  3543. I2S_STATUS_TXOVF = 17,//发送FIFO溢出标志
  3544. I2S_STATUS_TXTHF = 18,//发送FIFO开始标志
  3545. I2S_STATUS_TXFULL = 19,//发送FIFO满
  3546. I2S_STATUS_TXEMPTY = 20,//发送FIFO空
  3547. I2S_STATUS_TXBUSY = 21,//发送忙
  3548. I2S_STATUS_RZCF = 22,//右声道过零标志
  3549. I2S_STATUS_LZCF = 23,//左声道过零标志
  3550. I2S_STATUS_RX_LEVEL = 24,//接收FIFO水平
  3551. I2S_STATUS_TX_LEVEL = 28,//发送FIFO水平
  3552. }NU_I2S_STATUS_ENUM;

  3553. typedef volatile union
  3554. {
  3555. NU_REG Regs;
  3556. I2S_STATUS_T Bits;
  3557. }NU_I2S_STATUS_T;
  3558. //----------------------------------------------------//
  3559. typedef struct
  3560. {
  3561. __IO NU_I2S_CON_T CON;//I2S控制寄存器
  3562. __IO NU_I2S_CLKDIV_T CLKDIV;//I2S时钟分频寄存器
  3563. __IO NU_I2S_IE_T IE;//I2S中断使能寄存器
  3564. __IO NU_I2S_STATUS_T STATUS;//I2S状态寄存器
  3565. __O NU_REG_BITs TXFIFO;//I2S发送FIFO寄存器
  3566. __I NU_REG_BITs RXFIFO;//I2S接收FIFO寄存器
  3567. }NU_I2S_T;
  3568. //----------------------------------------------------//
  3569. #define I2Ss (*((NU_I2S_T *) I2S_BASE))//定位全局结构变量I2Ss
  3570. //----------------------------------------------------//
  3571. #define I2Sx ((NU_I2S_T *) I2S_BASE)
  3572. #endif
  3573. //----------------------------------------------------//
  3574. #ifdef __NUC1xx_H__
  3575. typedef enum
  3576. {
  3577. ACMP_CMPCR_CMPEN = 0,//比较器使能
  3578. ACMP_CMPCR_CMPIE = 1,//CMP中断使能
  3579. ACMP_CMPCR_CMP_HYSEN = 2,//CMP Hysterisis使能
  3580. ACMP_CMPCR_CMPCN = 4,//比较器负极输入选择
  3581. }NU_ACMP_CMPCR_ENUM;

  3582. typedef volatile union
  3583. {
  3584. NU_REG Regs;
  3585. ACMP_CMPCR_T Bits;
  3586. }NU_ACMP_CMPCR_T;
  3587. //----------------------------------------------------//
  3588. typedef enum
  3589. {
  3590. ACMP_CMPSR_CMPF0 = 0,//比较器0标志位
  3591. ACMP_CMPSR_CMPF1 = 1,//比较器1标志位
  3592. ACMP_CMPSR_CO0 = 2,//比较器0输出
  3593. ACMP_CMPSR_CO1 = 3,//比较器1输出
  3594. }NU_ACMP_CMPSR_ENUM;

  3595. typedef volatile union
  3596. {
  3597. NU_REG Regs;
  3598. ACMP_CMPSR_T Bits;
  3599. }NU_ACMP_CMPSR_T;
  3600. //----------------------------------------------------//
  3601. typedef struct
  3602. {
  3603. union{
  3604. __IO NU_ACMP_CMPCR_T CMPCR[2];//CMP控制寄存器01数组
  3605. struct{
  3606. __IO NU_ACMP_CMPCR_T CMPCR0;//CMP控制寄存器0
  3607. __IO NU_ACMP_CMPCR_T CMPCR1;//CMP控制寄存器1
  3608. };
  3609. };
  3610. __IO NU_ACMP_CMPSR_T CMPSR;//CMP状态寄存器
  3611. }NU_ACMP_T;
  3612. //----------------------------------------------------//
  3613. #define ACMPs (*((NU_ACMP_T *) ACMP_BASE))//定位全局结构变量ACMPs
  3614. //----------------------------------------------------//
  3615. #define ACMPx ((NU_ACMP_T *) ACMP_BASE)
  3616. #endif
  3617. //----------------------------------------------------//
  3618. typedef enum
  3619. {
  3620. EBI_CON_ExtEN = 0,//
  3621. EBI_CON_ExtBW16 = 1,//
  3622. EBI_CON_MCLKDIV = 8,//
  3623. EBI_CON_ExttALE = 16,//
  3624. }NU_EBI_CON_ENUM;

  3625. typedef volatile union
  3626. {
  3627. NU_REG Regs;
  3628. EBI_CON_T Bits;
  3629. }NU_EBI_CON_T;
  3630. //----------------------------------------------------//
  3631. typedef enum
  3632. {
  3633. EBI_TIME_ExttACC = 3,//
  3634. EBI_TIME_ExttAHD = 8,//
  3635. EBI_TIME_ExtIW2X = 12,//
  3636. EBI_TIME_ExtIR2W = 20,//
  3637. EBI_TIME_ExtIR2R = 24,//
  3638. }NU_EBI_TIME_ENUM;

  3639. typedef volatile union
  3640. {
  3641. NU_REG Regs;
  3642. EBI_TIME_T Bits;
  3643. }NU_EBI_TIME_T;
  3644. //----------------------------------------------------//
  3645. typedef struct
  3646. {
  3647. __IO NU_EBI_CON_T CON;//控制寄存器
  3648. __IO NU_EBI_TIME_T TIME;
  3649. }NU_EBI_T;

  3650. //----------------------------------------------------//
  3651. #define EBIs (*((NU_EBI_T *) EBI_BASE))//定位全局结构变量EBIs
  3652. //----------------------------------------------------//
  3653. #define EBIx ((NU_EBI_T *) EBI_BASE)
  3654. //-------------------------------------------------------//
  3655. typedef enum
  3656. {
  3657. IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7,
  3658. IRQ8, IRQ9, IRQ10, IRQ11, IRQ12, IRQ13, IRQ14, IRQ15,
  3659. IRQ16, IRQ17, IRQ18, IRQ19, IRQ20, IRQ21, IRQ22, IRQ23,
  3660. IRQ24, IRQ25, IRQ26, IRQ27, IRQ28, IRQ29, IRQ30, IRQ31
  3661. }NU_IRQs_ENUM;

  3662. #ifdef __NUC1xx_H__//NUC1xx
  3663. typedef volatile struct
  3664. {
  3665. NU_REG BOD_IRQn: 1;
  3666. NU_REG WDT_IRQn: 1;
  3667. NU_REG EINT0_IRQn: 1;
  3668. NU_REG EINT1_IRQn: 1;
  3669. NU_REG GPAB_IRQn: 1;
  3670. NU_REG GPCDE_IRQn: 1;
  3671. NU_REG PWMA_IRQn: 1;
  3672. NU_REG PWMB_IRQn: 1;
  3673. NU_REG TMR0_IRQn: 1;
  3674. NU_REG TMR1_IRQn: 1;
  3675. NU_REG TMR2_IRQn: 1;
  3676. NU_REG TMR3_IRQn: 1;
  3677. NU_REG UART0_IRQn: 1;
  3678. NU_REG UART1_IRQn: 1;
  3679. NU_REG SPI0_IRQn: 1;
  3680. NU_REG SPI1_IRQn: 1;
  3681. NU_REG SPI2_IRQn: 1;
  3682. NU_REG SPI3_IRQn: 1;
  3683. NU_REG I2C0_IRQn: 1;
  3684. NU_REG I2C1_IRQn: 1;
  3685. NU_REG CAN0_IRQn: 1;
  3686. NU_REG CAN1_IRQn: 1;
  3687. NU_REG SD_IRQn: 1;
  3688. NU_REG USBD_IRQn: 1;
  3689. NU_REG PS2_IRQn: 1;
  3690. NU_REG ACMP_IRQn: 1;
  3691. NU_REG PDMA_IRQn: 1;
  3692. NU_REG I2S_IRQn: 1;
  3693. NU_REG PWRWU_IRQn: 1;
  3694. NU_REG ADC_IRQn: 1;
  3695. NU_REG DAC_IRQn: 1;
  3696. NU_REG RTC_IRQn: 1;
  3697. }NU_IRQs;
  3698. #else
  3699. typedef volatile struct
  3700. {
  3701. NU_REG BOD_IRQn: 1;
  3702. NU_REG WDT_IRQn: 1;
  3703. NU_REG EINT0_IRQn: 1;
  3704. NU_REG EINT1_IRQn: 1;
  3705. NU_REG GPAB_IRQn: 1;
  3706. NU_REG GPCDE_IRQn: 1;
  3707. NU_REG PWMA_IRQn: 1;
  3708. NU_REG PWMB_IRQn: 1;
  3709. NU_REG TMR0_IRQn: 1;
  3710. NU_REG TMR1_IRQn: 1;
  3711. NU_REG TMR2_IRQn: 1;
  3712. NU_REG TMR3_IRQn: 1;
  3713. NU_REG UART0_IRQn: 1;
  3714. NU_REG UART1_IRQn: 1;
  3715. NU_REG SPI0_IRQn: 1;
  3716. NU_REG SPI1_IRQn: 1;
  3717. NU_REG SPI2_IRQn: 1;
  3718. NU_REG SPI3_IRQn: 1;
  3719. NU_REG I2C0_IRQn: 1;
  3720. NU_REG I2C1_IRQn: 1;
  3721. NU_REG CAN0_IRQn: 1;
  3722. NU_REG CAN1_IRQn: 1;
  3723. NU_REG SD_IRQn: 1;
  3724. NU_REG USBD_IRQn: 1;
  3725. NU_REG PS2_IRQn: 1;
  3726. NU_REG ACMP_IRQn: 1;
  3727. NU_REG PDMA_IRQn: 1;
  3728. NU_REG I2S_IRQn: 1;
  3729. NU_REG PWRWU_IRQn: 1;
  3730. NU_REG ADC_IRQn: 1;
  3731. NU_REG DAC_IRQn: 1;
  3732. NU_REG RTC_IRQn: 1;
  3733. }NU_IRQs;
  3734. #endif
  3735. typedef volatile union
  3736. {
  3737. __IO NU_REG Regs;
  3738. __IO NU_IRQs Bits;
  3739. }NU_REG_IRQs;
  3740. //----------------------------------------------------//
  3741. typedef enum
  3742. {
  3743. NVIC_IPR0_PRI_0 = 0, //IRQ0优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3744. NVIC_IPR0_PRI_1 = 8, //IRQ1优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3745. NVIC_IPR0_PRI_2 = 16,//IRQ2优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3746. NVIC_IPR0_PRI_3 = 24 //IRQ3优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3747. }NU_NVIC_IPR0_ENUM;

  3748. typedef struct
  3749. {
  3750. __I NU_REG PRI_0:8;
  3751. __I NU_REG PRI_1:8;
  3752. __I NU_REG PRI_2:8;
  3753. __I NU_REG PRI_3:8;
  3754. }NU_NVIC_IPR0_Bits;

  3755. typedef volatile union
  3756. {
  3757. NU_REG Regs;
  3758. NU_NVIC_IPR0_Bits Bits;
  3759. }NU_NVIC_IPR0_T;
  3760. //----------------------------------------------------//
  3761. typedef enum
  3762. {
  3763. NVIC_IPR1_PRI_4 = 0, //IRQ4优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3764. NVIC_IPR1_PRI_5 = 8, //IRQ5优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3765. NVIC_IPR1_PRI_6 = 16,//IRQ6优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3766. NVIC_IPR1_PRI_7 = 24 //IRQ7优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3767. }NU_NVIC_IPR1_ENUM;

  3768. typedef struct
  3769. {
  3770. __I NU_REG PRI_4:8;
  3771. __I NU_REG PRI_5:8;
  3772. __I NU_REG PRI_6:8;
  3773. __I NU_REG PRI_7:8;
  3774. }NU_NVIC_IPR1_Bits;

  3775. typedef volatile union
  3776. {
  3777. NU_REG Regs;
  3778. NU_NVIC_IPR1_Bits Bits;
  3779. }NU_NVIC_IPR1_T;
  3780. //----------------------------------------------------//
  3781. typedef enum
  3782. {
  3783. NVIC_IPR2_PRI_8 = 0, //IRQ8优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3784. NVIC_IPR2_PRI_9 = 8, //IRQ9优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3785. NVIC_IPR2_PRI_10 = 16,//IRQ10优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3786. NVIC_IPR2_PRI_11 = 24 //IRQ11优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3787. }NU_NVIC_IPR2_ENUM;

  3788. typedef struct
  3789. {
  3790. __I NU_REG PRI_8:8;
  3791. __I NU_REG PRI_9:8;
  3792. __I NU_REG PRI_10:8;
  3793. __I NU_REG PRI_11:8;
  3794. }NU_NVIC_IPR2_Bits;

  3795. typedef volatile union
  3796. {
  3797. NU_REG Regs;
  3798. NU_NVIC_IPR2_Bits Bits;
  3799. }NU_NVIC_IPR2_T;
  3800. //----------------------------------------------------//
  3801. typedef enum
  3802. {
  3803. NVIC_IPR_PRI_A = 0, //IRQ0,4,8,12,16,20,24,28优先级
  3804. NVIC_IPR_PRI_B = 8, //IRQ1,5,9,13,17,21,25,29优先级
  3805. NVIC_IPR_PRI_C = 16,//IRQ2,6,10,14,18,22,26,30优先级
  3806. NVIC_IPR_PRI_D = 24 //IRQ3,7,11,15,19,23,27,31优先级
  3807. }NU_NVIC_IPR_ENUM;

  3808. typedef struct
  3809. {
  3810. __I NU_REG PRI_A:8;
  3811. __I NU_REG PRI_B:8;
  3812. __I NU_REG PRI_C:8;
  3813. __I NU_REG PRI_D:8;
  3814. }NU_NVIC_IPR_Bits;

  3815. typedef volatile union
  3816. {
  3817. NU_REG Regs;
  3818. NU_NVIC_IPR_Bits Bits;
  3819. }NU_NVIC_IPR_T;
  3820. //----------------------------------------------------//
  3821. typedef enum
  3822. {
  3823. NVIC_IPR3_PRI_12 = 0, //IRQ12优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3824. NVIC_IPR3_PRI_13 = 8, //IRQ13优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3825. NVIC_IPR3_PRI_14 = 16,//IRQ14优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3826. NVIC_IPR3_PRI_15 = 24 //IRQ15优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3827. }NU_NVIC_IPR3_ENUM;

  3828. typedef struct
  3829. {
  3830. __I NU_REG PRI_12:8;
  3831. __I NU_REG PRI_13:8;
  3832. __I NU_REG PRI_14:8;
  3833. __I NU_REG PRI_15:8;
  3834. }NU_NVIC_IPR3_Bits;

  3835. typedef volatile union
  3836. {
  3837. NU_REG Regs;
  3838. NU_NVIC_IPR3_Bits Bits;
  3839. }NU_NVIC_IPR3_T;
  3840. //----------------------------------------------------//
  3841. typedef enum
  3842. {
  3843. NVIC_IPR4_PRI_16 = 0, //IRQ16优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3844. NVIC_IPR4_PRI_17 = 8, //IRQ17优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3845. NVIC_IPR4_PRI_18 = 16,//IRQ18优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3846. NVIC_IPR4_PRI_19 = 24 //IRQ19优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3847. }NU_NVIC_IPR4_ENUM;

  3848. typedef struct
  3849. {
  3850. __I NU_REG PRI_16:8;
  3851. __I NU_REG PRI_17:8;
  3852. __I NU_REG PRI_18:8;
  3853. __I NU_REG PRI_19:8;
  3854. }NU_NVIC_IPR4_Bits;

  3855. typedef volatile union
  3856. {
  3857. NU_REG Regs;
  3858. NU_NVIC_IPR4_Bits Bits;
  3859. }NU_NVIC_IPR4_T;
  3860. //----------------------------------------------------//
  3861. typedef enum
  3862. {
  3863. NVIC_IPR5_PRI_20 = 0, //IRQ20优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3864. NVIC_IPR5_PRI_21 = 8, //IRQ21优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3865. NVIC_IPR5_PRI_22 = 16,//IRQ22优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3866. NVIC_IPR5_PRI_23 = 24 //IRQ23优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3867. }NU_NVIC_IPR5_ENUM;

  3868. typedef struct
  3869. {
  3870. __I NU_REG PRI_20:8;
  3871. __I NU_REG PRI_21:8;
  3872. __I NU_REG PRI_22:8;
  3873. __I NU_REG PRI_23:8;
  3874. }NU_NVIC_IPR5_Bits;

  3875. typedef volatile union
  3876. {
  3877. NU_REG Regs;
  3878. NU_NVIC_IPR5_Bits Bits;
  3879. }NU_NVIC_IPR5_T;
  3880. //----------------------------------------------------//
  3881. typedef enum
  3882. {
  3883. NVIC_IPR6_PRI_24 = 0, //IRQ24优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3884. NVIC_IPR6_PRI_25 = 8, //IRQ25优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3885. NVIC_IPR6_PRI_26 = 16,//IRQ26优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3886. NVIC_IPR6_PRI_27 = 24 //IRQ27优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3887. }NU_NVIC_IPR6_ENUM;

  3888. typedef struct
  3889. {
  3890. __I NU_REG PRI_24:8;
  3891. __I NU_REG PRI_25:8;
  3892. __I NU_REG PRI_26:8;
  3893. __I NU_REG PRI_27:8;
  3894. }NU_NVIC_IPR6_Bits;

  3895. typedef volatile union
  3896. {
  3897. NU_REG Regs;
  3898. NU_NVIC_IPR6_Bits Bits;
  3899. }NU_NVIC_IPR6_T;
  3900. //----------------------------------------------------//
  3901. typedef enum
  3902. {
  3903. NVIC_IPR7_PRI_28 = 0, //IRQ28优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3904. NVIC_IPR7_PRI_29 = 8, //IRQ29优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3905. NVIC_IPR7_PRI_30 = 16,//IRQ30优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3906. NVIC_IPR7_PRI_31 = 24 //IRQ31优先级(“0” 表示最高优先级& “3” 表示最低优先级)
  3907. }NU_NVIC_IPR7_ENUM;

  3908. typedef struct
  3909. {
  3910. __I NU_REG PRI_28:8;
  3911. __I NU_REG PRI_29:8;
  3912. __I NU_REG PRI_30:8;
  3913. __I NU_REG PRI_31:8;
  3914. }NU_NVIC_IPR7_Bits;

  3915. typedef volatile union
  3916. {
  3917. NU_REG Regs;
  3918. NU_NVIC_IPR7_Bits Bits;
  3919. }NU_NVIC_IPR7_T;
  3920. //----------------------------------------------------//
  3921. typedef struct
  3922. {
  3923. __I NU_REG_IRQs ISER;//IRQ0~IRQ31设置使能控制寄存器
  3924. __I NU_REG RESERVED0[31];
  3925. __I NU_REG_IRQs ICER;//IRQ0~IRQ31清使能控制寄存器
  3926. __I NU_REG RSERVED1[31];
  3927. __I NU_REG_IRQs ISPR;//IRQ0~IRQ31设置挂起控制寄存器
  3928. __I NU_REG RESERVED2[31];
  3929. __I NU_REG_IRQs ICPR;//IRQ0~IRQ31清挂起控制寄存器
  3930. __I NU_REG RESERVED3[31];
  3931. __I NU_REG RESERVED4[64];
  3932. union{
  3933. __I NU_NVIC_IPR_T IPR[8];//IRQ0~IRQ31优先级控制寄存器
  3934. struct{
  3935. __I NU_NVIC_IPR0_T IPR0;//IRQ0~IRQ3优先级控制寄存器
  3936. __I NU_NVIC_IPR1_T IPR1;//IRQ4~IRQ7优先级控制寄存器
  3937. __I NU_NVIC_IPR2_T IPR2;//IRQ8~IRQ11优先级控制寄存器
  3938. __I NU_NVIC_IPR3_T IPR3;//IRQ12~IRQ15优先级控制寄存器
  3939. __I NU_NVIC_IPR4_T IPR4;//IRQ16~IRQ19优先级控制寄存器
  3940. __I NU_NVIC_IPR5_T IPR5;//IRQ20~IRQ23优先级控制寄存器
  3941. __I NU_NVIC_IPR6_T IPR6;//IRQ24~IRQ27优先级控制寄存器
  3942. __I NU_NVIC_IPR7_T IPR7;//IRQ28~IRQ31优先级控制寄存器
  3943. };
  3944. };
  3945. }NU_NVIC_Type;
  3946. //----------------------------------------------------//
  3947. #define NVICs (*((NU_NVIC_Type *) NVIC_BASE))//定位全局结构变量NVICs
  3948. //----------------------------------------------------//
  3949. #define NVICx ((NU_NVIC_Type *) NVIC_BASE)
  3950. //----------------------------------------------------//
  3951. #define NVICs_setPriority(vic, bit) VICs.IPR[(vic) >> 2].Regs |= (bit << 6) << (((vic) & 3) << 3)
  3952. //----------------------------------------------------//
  3953. typedef enum
  3954. {
  3955. SCB_CPUID_REVISION = 0,//值为0x0
  3956. SCB_CPUID_PARTNO = 4,//值为0xC20
  3957. SCB_CPUID_PART = 16,//ARMv6-M值为0xC
  3958. SCB_CPUID_IMPLEMENTER = 24,//由ARM分配执行码(ARM=0x41)
  3959. }NU_SCB_CPUID_ENUM;

  3960. typedef struct
  3961. {
  3962. __I NU_REG REVISION:4;
  3963. __I NU_REG PARTNO:12;
  3964. __I NU_REG PART:4;
  3965. __I NU_REG RESERVE:4;
  3966. __I NU_REG IMPLEMENTER:8;
  3967. }SCB_CPUID_T;

  3968. typedef volatile union
  3969. {
  3970. NU_REG Regs;
  3971. SCB_CPUID_T Bits;
  3972. }NU_SCB_CPUID_T;

  3973. typedef enum
  3974. {
  3975. SCB_ICSR_VECTACTIVE = 0,//0:线程模式 value > 1: 当前执行异常处理的数目
  3976. SCB_ICSR_VECTPENDING = 12,//表示最高优先级挂起异常的数目
  3977. SCB_ICSR_ISRPENDING = 22,//表示外部配置中断是否挂起
  3978. SCB_ICSR_ISRPREEMPT = 23,//如果置位,挂起异常生效,由调试停止状态退出
  3979. SCB_ICSR_PENDSTCLR = 25,//写1清除挂起SysTick
  3980. SCB_ICSR_PENDSTSET = 26,//设置挂起SysTick.由当前状态读回(1 if Pending,0 if not)
  3981. SCB_ICSR_PENDSVCLR = 27,//写1清PendSV中断
  3982. SCB_ICSR_PENDSVSET = 28,//设置PendSV 中断.通常用于请求内容切换.由当前状态读回(1 if Pending, 0 if not)
  3983. SCB_ICSR_NMIPENDSET = 31//
  3984. }NU_SCB_ICSR_ENUM;

  3985. typedef struct
  3986. {
  3987. __I NU_REG VECTACTIVE:9;
  3988. __I NU_REG VECTPENDING:9;
  3989. __I NU_REG ISRPENDING:1;
  3990. __I NU_REG ISRPREEMPT:1;
  3991. __I NU_REG RESERVE1:1;
  3992. __O NU_REG PENDSTCLR:1;
  3993. __IO NU_REG PENDSTSET:1;
  3994. __I NU_REG PENDSVCLR:1;
  3995. __IO NU_REG PENDSVSET:1;
  3996. __I NU_REG RESERVE2:2;
  3997. __IO NU_REG NMIPENDSET:1;
  3998. }SCB_ICSR_T;

  3999. typedef volatile union
  4000. {
  4001. NU_REG Regs;
  4002. SCB_ICSR_T Bits;
  4003. }NU_SCB_ICSR_T;

  4004. typedef enum
  4005. {
  4006. SCB_SCR_SLEEPONEXIT = 1,//设置为1,在异常返回到线程模式时,内核进入休眠状态
  4007. SCB_SCR_SLEEPDEEP = 2,//提示从休眠中唤醒需要较长时间
  4008. SCB_SCR_SEVONPEND = 4 //当使能时,中断由不活动到挂起,包括了唤醒事件(WFE指令)
  4009. }NU_SCB_SCR_ENUM;

  4010. typedef struct
  4011. {
  4012. __I NU_REG RESERVE0:1;
  4013. __I NU_REG SLEEPONEXIT:1;
  4014. __I NU_REG SLEEPDEEP:1;
  4015. __I NU_REG RESERVE1:1;
  4016. __O NU_REG SEVONPEND:1;
  4017. __I NU_REG RESERVE2:27;
  4018. }SCB_SCR_T;

  4019. typedef volatile union
  4020. {
  4021. NU_REG Regs;
  4022. SCB_ICSR_T Bits;
  4023. }NU_SCB_SCR_T;

  4024. typedef struct
  4025. {
  4026. __I NU_SCB_CPUID_T CPUID;//CPUID Base 寄存器
  4027. __IO NU_SCB_ICSR_T ICSR;//中断控制状态寄存器
  4028. __I NU_REG RESERVED0;
  4029. __IO NU_REG_BITs AIRCR;
  4030. __IO NU_SCB_SCR_T SCR;//系统控制寄存器
  4031. __IO NU_REG_BITs CCR;
  4032. __I NU_REG RESERVED1;
  4033. union{
  4034. __IO NU_REG_BITs SHP[2];//系统处理器优先级寄存器2和3
  4035. struct{
  4036. __IO NU_REG_BITs SHP2;//系统处理器优先级寄存器2
  4037. __IO NU_REG_BITs SHP3;//系统处理器优先级寄存器3
  4038. };
  4039. };
  4040. __IO NU_REG_BITs SHCSR;
  4041. __I NU_REG RESERVED2[2];
  4042. __IO NU_REG_BITs DFSR;
  4043. }NU_SCB_Type;
  4044. //----------------------------------------------------//
  4045. #define SCBs (*((NU_SCB_Type *) SCB_BASE))//定位全局结构变量SCBs
  4046. //----------------------------------------------------//
  4047. #define SCBx ((NU_SCB_Type *) SCB_BASE)
  4048. //----------------------------------------------------//
  4049. typedef enum
  4050. {
  4051. SysTick_CTRL_TICKENABLE = 0,//计数器运行于multi-shot manner.
  4052. SysTick_CTRL_TICKINT = 1,//向下计数到0将引起SysTick 异常而挂起.
  4053. SysTick_CTRL_CLKSRC = 2,//如果没有外部时钟时,可用内核时钟作SysTick, 该位被读为1 ,不能写.
  4054. SysTick_CTRL_COUNTFLAG = 16//计数由1到0时,COUNTFLAG 置位.
  4055. }NU_SysTick_CTRL_ENUM;

  4056. typedef struct
  4057. {
  4058. __IO NU_REG TICKENABLE:1;
  4059. __IO NU_REG TICKINT:1;
  4060. __IO NU_REG CLKSRC:1;
  4061. __IO NU_REG RESERVE0:13;
  4062. __IO NU_REG COUNTFLAG:1;
  4063. __IO NU_REG RESERVE1:15;
  4064. }SysTick_CTRL_T;

  4065. typedef volatile union
  4066. {
  4067. NU_REG Regs;
  4068. SysTick_CTRL_T Bits;
  4069. }NU_SysTick_CTRL_T;

  4070. typedef enum
  4071. {
  4072. SysTick_LOAD_RELOAD = 0,//当计数器达到0时,值加载到当前值寄存器
  4073. }NU_SysTick_LOAD_ENUM;

  4074. typedef struct
  4075. {
  4076. __IO NU_REG RELOAD:24;
  4077. __IO NU_REG RESERVE:8;
  4078. }SysTick_LOAD_T;

  4079. typedef volatile union
  4080. {
  4081. NU_REG Regs;
  4082. SysTick_LOAD_T Bits;
  4083. }NU_SysTick_LOAD_T;

  4084. typedef enum
  4085. {
  4086. SysTick_VAL_CURRENT = 0,//当前计数值,为采样时刻的计数器的值
  4087. }NU_SysTick_VAL_ENUM;

  4088. typedef struct
  4089. {
  4090. __IO NU_REG CURRENT:24;
  4091. __IO NU_REG RESERVE:8;
  4092. }SysTick_VAL_T;

  4093. typedef volatile union
  4094. {
  4095. NU_REG Regs;
  4096. SysTick_VAL_T Bits;
  4097. }NU_SysTick_VAL_T;

  4098. typedef struct
  4099. {
  4100. __IO NU_SysTick_CTRL_T CTRL;//SysTick控制与状态
  4101. __IO NU_SysTick_LOAD_T LOAD;//SysTick重新加载值
  4102. __IO NU_SysTick_VAL_T VAL;//SysTick当前值
  4103. __I NU_REG_BITs CALIB;
  4104. }NU_SysTick_Type;
  4105. //----------------------------------------------------//
  4106. #define SysTicks (*((NU_SysTick_Type *) SysTick_BASE))//定位全局结构变量SysTicks
  4107. //----------------------------------------------------//
  4108. #define SysTickx ((NU_SysTick_Type *) SysTick_BASE)
  4109. //----------------------------------------------------//
  4110. typedef struct
  4111. {
  4112. __IO NU_REG_BITs DHCSR;
  4113. __O NU_REG_BITs DCRSR;
  4114. __IO NU_REG_BITs DCRDR;
  4115. __IO NU_REG_BITs DEMCR;
  4116. }NU_CoreDebug_Type;
  4117. //----------------------------------------------------//
  4118. #define CoreDebugs (*((NU_CoreDebug_Type *) CoreDebug_BASE))//定位全局结构变量CoreDebugs
  4119. //----------------------------------------------------//
  4120. #define CoreDebugx ((NU_CoreDebug_Type *) CoreDebug_BASE)
  4121. //----------------------------------------------------//



  4122. //----------------------------------------------------//

  4123. #ifdef __NUC1xx_H__//NUC1xx
  4124. /*
  4125. typedef struct
  4126. {
  4127. __I NU_REG RESERVE0[0x04000];//APB1_BASE+0x00000
  4128. __IO NU_WDT_T APB1_WDT; //APB1_BASE+0x04000
  4129. __I NU_REG RESERVE1[((0x08000 - 0x04000) - sizeof(NU_WDT_T)) / 4];
  4130. __IO NU_RTC_T APB1_RTC; //APB1_BASE+0x08000
  4131. __I NU_REG RESERVE2[((0x10000 - 0x08000) - sizeof(NU_RTC_T)) / 4];
  4132. __IO NU_TIMER_T APB1_TIMER0;//APB1_BASE+0x10000
  4133. __I NU_REG RESERVE3[((0x10020 - 0x10000) - sizeof(NU_TIMER_T)) / 4];
  4134. __IO NU_TIMER_T APB1_TIMER1;//APB1_BASE+0x10020
  4135. __I NU_REG RESERVE4[((0x20000 - 0x10020) - sizeof(NU_TIMER_T)) / 4];
  4136. __IO NU_I2C_T APB1_I2C0; //APB1_BASE+0x20000
  4137. __I NU_REG RESERVE5[((0x30000 - 0x20000) - sizeof(NU_I2C_T)) / 4];
  4138. __IO NU_SPI_T APB1_SPI0; //APB1_BASE+0x30000
  4139. __I NU_REG RESERVE6[((0x34000 - 0x30000) - sizeof(NU_SPI_T)) / 4];
  4140. __IO NU_SPI_T APB1_SPI1; //APB1_BASE+0x34000
  4141. __I NU_REG RESERVE7[((0x40000 - 0x34000) - sizeof(NU_SPI_T)) / 4];
  4142. __IO NU_PWM_T APB1_PWMA; //APB1_BASE+0x40000
  4143. __I NU_REG RESERVE8[((0x50000 - 0x40000) - sizeof(NU_PWM_T)) / 4];
  4144. __IO NU_UART_T APB1_UART0; //APB1_BASE+0x50000
  4145. __I NU_REG RESERVE9[((0x60000 - 0x50000) - sizeof(NU_UART_T)) / 4];
  4146. __IO NU_USBD_T APB1_USBD; //APB1_BASE+0x60000
  4147. __I NU_REG RESERVE10[((0xD0000 - 0x60000) - sizeof(NU_USBD_T)) / 4];
  4148. __IO NU_ACMP_T APB1_ACMP; //APB1_BASE+0xD0000
  4149. __I NU_REG RESERVE11[((0xE0000 - 0xD0000) - sizeof(NU_ACMP_T)) / 4];
  4150. __IO NU_ADC_T APB1_ADC; //APB1_BASE+0xE0000
  4151. }NU_APB1_BASE_T;
  4152. */
  4153. //----------------------------------------------------//
  4154. #else//M05x
  4155. typedef struct
  4156. {
  4157. __I NU_REG RESERVE1[0x04000];
  4158. __IO NU_WDT_T APB1_WDT; //APB1_BASE+0x04000
  4159. __I NU_REG RESERVE2[((0x10000 - 0x04000) - sizeof(NU_WDT_T)) / 4];
  4160. __IO NU_TIMER_T APB1_TIMER0;//APB1_BASE+0x10000
  4161. __I NU_REG RESERVE3[((0x10020 - 0x10000) - sizeof(NU_TIMER_T)) / 4];
  4162. __IO NU_TIMER_T APB1_TIMER1;//APB1_BASE+0x10020
  4163. __I NU_REG RESERVE4[((0x20000 - 0x10020) - sizeof(NU_TIMER_T)) / 4];
  4164. __IO NU_I2C_T APB1_I2C; //APB1_BASE+0x20000
  4165. __I NU_REG RESERVE5[((0x30000 - 0x20000) - sizeof(NU_I2C_T)) / 4];
  4166. __IO NU_SPI_T APB1_SPI0; //APB1_BASE+0x30000
  4167. __I NU_REG RESERVE6[((0x34000 - 0x30000) - sizeof(NU_SPI_T)) / 4];
  4168. __IO NU_SPI_T APB1_SPI1; //APB1_BASE+0x34000
  4169. __I NU_REG RESERVE7[((0x40000 - 0x34000) - sizeof(NU_SPI_T)) / 4];
  4170. __IO NU_PWM_T APB1_PWMA; //APB1_BASE+0x40000
  4171. __I NU_REG RESERVE8[((0x50000 - 0x40000) - sizeof(NU_PWM_T)) / 4];
  4172. __IO NU_UART_T APB1_UART0; //APB1_BASE+0x50000
  4173. __I NU_REG RESERVE9[((0xE0000 - 0x50000) - sizeof(NU_UART_T)) / 4];
  4174. __IO NU_ADC_T APB1_ADC; //APB1_BASE+0xE0000
  4175. }NU_APB1_BASE_T;
  4176. #endif
  4177. //----------------------------------------------------//
  4178. #define APB1s (*((NU_APB1_BASE_T *) APB1_BASE))//定位全局结构变量APB1s;0x40000000
  4179. //----------------------------------------------------//
  4180. #ifdef __NUC1xx_H__//NUC1xx
  4181. /*
  4182. typedef struct
  4183. {
  4184. __IO NU_PS2_T APB2_PS2;//APB2_BASE+0x00000
  4185. __I NU_REG RESERVE1[((0x10000 - 0x00000) - sizeof(NU_PS2_T)) / 4];
  4186. __IO NU_TIMER_T APB2_TIMER2;//APB2_BASE+0x10000
  4187. __I NU_REG RESERVE2[((0x10020 - 0x10000) - sizeof(NU_TIMER_T)) / 4];
  4188. __IO NU_TIMER_T APB2_TIMER3;//APB2_BASE+0x10020
  4189. __I NU_REG RESERVE3[((0x20000 - 0x10020) - sizeof(NU_TIMER_T)) / 4];
  4190. __IO NU_I2C_T APB2_I2C1; //APB2_BASE+0x20000
  4191. __I NU_REG RESERVE4[((0x30000 - 0x20000) - sizeof(NU_I2C_T)) / 4];
  4192. __IO NU_SPI_T APB2_SPI2; //APB2_BASE+0x30000
  4193. __I NU_REG RESERVE5[((0x34000 - 0x30000) - sizeof(NU_SPI_T)) / 4];
  4194. __IO NU_SPI_T APB2_SPI3; //APB2_BASE+0x34000
  4195. __I NU_REG RESERVE6[((0x40000 - 0x34000) - sizeof(NU_SPI_T)) / 4];
  4196. __IO NU_PWM_T APB2_PWMB; //APB2_BASE+0x40000
  4197. __I NU_REG RESERVE7[((0x50000 - 0x40000) - sizeof(NU_PWM_T)) / 4];
  4198. __IO NU_UART_T APB2_UART1; //APB2_BASE+0x50000
  4199. __I NU_REG RESERVE8[((0x54000 - 0x50000) - sizeof(NU_UART_T)) / 4];
  4200. __IO NU_UART_T APB2_UART2; //APB2_BASE+0x54000
  4201. __I NU_REG RESERVE9[((0x80000 - 0x54000) - sizeof(NU_UART_T)) / 4];
  4202. __IO NU_CAN_T APB2_CAN0; //APB2_BASE+0x80000
  4203. __I NU_REG RESERVE10[((0x84000 - 0x80000) - sizeof(NU_CAN_T)) / 4];
  4204. __IO NU_CAN_T APB2_CAN1; //APB2_BASE+0x84000
  4205. }NU_APB2_BASE_T;
  4206. */
  4207. #else//M05x
  4208. typedef struct
  4209. {
  4210. __I NU_REG RESERVE0[0x10000];
  4211. __IO NU_TIMER_T APB2_TIMER2;//APB2_BASE+0x10000
  4212. __I NU_REG RESERVE1[((0x10020 - 0x10000) - sizeof(NU_TIMER_T)) / 4];
  4213. __IO NU_TIMER_T APB2_TIMER3;//APB2_BASE+0x10020
  4214. __I NU_REG RESERVE2[((0x40000 - 0x10020) - sizeof(NU_TIMER_T)) / 4];
  4215. __IO NU_PWM_T APB2_PWMB; //APB2_BASE+0x40000
  4216. __I NU_REG RESERVE3[((0x50000 - 0x40000) - sizeof(NU_PWM_T)) / 4];
  4217. __IO NU_UART_T APB2_UART1; //APB2_BASE+0x50000
  4218. }NU_APB2_BASE_T;
  4219. #endif
  4220. //----------------------------------------------------//
  4221. #define APB2s (*((NU_APB2_BASE_T *) APB2_BASE))//定位全局结构变量APB2s;0x40100000
  4222. //----------------------------------------------------//
  4223. #ifdef __NUC1xx_H__//NUC1xx
  4224. typedef struct
  4225. {
  4226. __IO NU_GCR_T AHB_SYS;//AHB_BASE+0x00000
  4227. __I NU_REG RESERVE1[((0x00200 - 0x00000) - sizeof(NU_GCR_T)) / 4];
  4228. __IO NU_SYSCLK_T AHB_SYSCLK;//AHB_BASE+0x00200
  4229. __I NU_REG RESERVE2[((0x00300 - 0x00200) - sizeof(NU_SYSCLK_T)) / 4];
  4230. __IO NU_GCR_INT_T AHB_SYSINT;//AHB_BASE+0x00300
  4231. __I NU_REG RESERVE3[((0x01000 - 0x00300) - sizeof(NU_GCR_INT_T)) / 4];
  4232. __IO NU_EBI_T AHB_EBI;//AHB_BASE+0x10000
  4233. __I NU_REG RESERVE4[((0x04000 - 0x01000) - sizeof(NU_EBI_T)) / 4];
  4234. __IO NUS_GPIO AHB_GPIO;//AHB_BASE+0x4000
  4235. __I NU_REG RESERVE5[((0x08000 - 0x04000) - sizeof(NUS_GPIO)) / 4];
  4236. __IO NU_PDMA_T AHB_PDMA;//AHB_BASE+0x08000
  4237. __I NU_REG RESERVE6[((0x0C000 - 0x04000) - sizeof(NU_PDMA_T)) / 4];
  4238. __IO NU_FMC_T AHB_FMC;//AHB_BASE+0x0C000
  4239. }NU_AHB_BASE_T;
  4240. #else//M05x
  4241. typedef struct
  4242. {
  4243. __IO NU_GCR_T AHB_SYS;//AHB_BASE+0x00000
  4244. __I NU_REG RESERVE1[((0x00200 - 0x00000) - sizeof(NU_GCR_T)) / 4];
  4245. __IO NU_SYSCLK_T AHB_SYSCLK;//AHB_BASE+0x00200
  4246. __I NU_REG RESERVE2[((0x00300 - 0x00200) - sizeof(NU_SYSCLK_T)) / 4];
  4247. __IO NU_GCR_INT_T AHB_SYSINT;//AHB_BASE+0x00300
  4248. __I NU_REG RESERVE3[((0x01000 - 0x00300) - sizeof(NU_GCR_INT_T)) / 4];
  4249. __IO NU_EBI_T AHB_EBI;//AHB_BASE+0x10000
  4250. __I NU_REG RESERVE4[((0x04000 - 0x01000) - sizeof(NU_EBI_T)) / 4];
  4251. __IO NUS_GPIO AHB_GPIO;//AHB_BASE+0x4000
  4252. __I NU_REG RESERVE5[((0x0C000 - 0x04000) - sizeof(NUS_GPIO)) / 4];
  4253. __IO NU_FMC_T AHB_FMC;//AHB_BASE+0x0C000
  4254. }NU_AHB_BASE_T;
  4255. #endif
  4256. //----------------------------------------------------//
  4257. #define AHBs (*((NU_AHB_BASE_T *) AHB_BASE))//定位全局结构变量AHBs;//0x50000000
  4258. //----------------------------------------------------//
  4259. typedef struct
  4260. {
  4261. __I NU_REG RESERVE0[0x00000010];
  4262. __IO NU_SysTick_Type SCS_SysTick;//SCS_BASE+0x00000010
  4263. __I NU_REG RESERVE1[((0x00000100 - 0x00000010) - sizeof(NU_SysTick_Type)) / 4];
  4264. __IO NU_NVIC_Type SCS_NVIC;//SCS_BASE+0x00000100
  4265. __I NU_REG RESERVE2[((0x00000D00 - 0x00000100) - sizeof(NU_NVIC_Type)) / 4];
  4266. __IO NU_SCB_Type SCS_SCB;//SCS_BASE+0x00000D00
  4267. __I NU_REG RESERVE3[((0x00000DF0 - 0x00000D00) - sizeof(NU_SCB_Type)) / 4];
  4268. __IO NU_CoreDebug_Type SCS_CoreDebug; //SCS_BASE+0x00000DF0
  4269. }NU_SCS_BASE_T;
  4270. //----------------------------------------------------//
  4271. #define SCSs (*((NU_SCS_BASE_T *) SCS_BASE))//定位全局结构变量SCSs;0xE000E000
  4272. //----------------------------------------------------//
  4273. typedef void (*CALLBACK)(void);//通用回调函数指针
  4274. typedef struct
  4275. {
  4276. union{
  4277. NU_REG FLASH[0x00010000];//FLASH_BASE
  4278. struct{
  4279. CALLBACK VECTORS[16 + 32];
  4280. NU_REG RESERVE1[0x00010000 - (16 + 32)];
  4281. };
  4282. };
  4283. }NU_FLASE_T;
  4284. //----------------------------------------------------//
  4285. #define FLASHs (*((NU_FLASE_T *) FLASH_BASE))//定位全局结构变量FLASHs
  4286. //----------------------------------------------------//
  4287. typedef struct
  4288. {
  4289. __IO NU_REG SRAM[0x00001000];//SRAM_BASE
  4290. }NU_SRAM_T;
  4291. //----------------------------------------------------//
  4292. #define SRAMs (*((NU_SRAM_T *) SRAM_BASE))//定位全局结构变量SRAMs
  4293. //----------------------------------------------------//
  4294. #ifndef __NUC1xx_H__//NUC1xx
  4295. typedef struct
  4296. {
  4297. __IO NU_FLASE_T FLASH;//FLASH_BASE
  4298. __I NU_REG RESERVE1[((SRAM_BASE - FLASH_BASE) - sizeof(NU_FLASE_T)) / 4];
  4299. __IO NU_SRAM_T SRAM;//SRAM_BASE
  4300. __I NU_REG RESERVE2[((APB1_BASE - SRAM_BASE) - sizeof(NU_SRAM_T)) / 4];
  4301. __IO NU_APB1_BASE_T APB1;//APB1_BASE
  4302. __I NU_REG RESERVE3[((APB2_BASE - APB1_BASE) - sizeof(NU_APB1_BASE_T)) / 4];
  4303. __IO NU_APB2_BASE_T APB2;//APB2_BASE
  4304. __I NU_REG RESERVE4[((AHB_BASE - APB2_BASE) - sizeof(NU_APB2_BASE_T)) / 4];
  4305. __IO NU_AHB_BASE_T AHB;//AHB_BASE
  4306. __I NU_REG RESERVE5[((SCS_BASE - AHB_BASE) - sizeof(NU_AHB_BASE_T)) / 4];
  4307. __IO NU_SCS_BASE_T SCS;//SCS_BASE
  4308. }NU_BASE_T;
  4309. //----------------------------------------------------//
  4310. #define BASEs (*((NU_BASE_T *) 0))//定位全局结构变量BASEs;0x00000000
  4311. //----------------------------------------------------//
  4312. #endif


  4313. #ifdef __cplusplus
  4314. }
  4315. #endif

  4316. #endif /*__NUC1xxM051Seriescfg_H__ */
 楼主| hotpower 发表于 2011-5-10 21:41 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wangjianjia 发表于 2011-5-10 21:45 | 显示全部楼层
来抢抢沙发,哼哼,哈哈~~~~
ichuangj 发表于 2011-5-27 09:00 | 显示全部楼层
小凳子!
raable 发表于 2011-7-23 17:03 | 显示全部楼层
谢谢!
 楼主| hotpower 发表于 2011-7-25 12:40 | 显示全部楼层
抱歉,这个已过时了~~~

最新的,见NUC1xxM051Seriescfg.h(V1.20)
SYHDJF 发表于 2011-8-21 20:41 | 显示全部楼层
大叔推荐的第三步,刚刚下载了,刚下完就看到过时了,再去下
l545742117 发表于 2011-10-12 19:40 | 显示全部楼层
这样长的代码 我真的写不出来
 楼主| hotpower 发表于 2011-10-12 22:40 | 显示全部楼层
哈哈,这点代码太小。
fengok008 发表于 2011-10-13 14:10 | 显示全部楼层
谢谢菜农!!
听飞鸟说 发表于 2011-10-13 14:15 | 显示全部楼层
这 代码。。。
 楼主| hotpower 发表于 2011-10-21 07:13 | 显示全部楼层
红杏也要学习学习~~~
haolaishi 发表于 2011-12-15 16:55 | 显示全部楼层
:victory:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1460

主题

21619

帖子

508

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1460

主题

21619

帖子

508

粉丝
快速回复 在线客服 返回列表 返回顶部